码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础——字符编码

时间:2015-06-07 18:58:23      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:编码   字符   

                           字符编码   

一、概述
InputStreamReader
OutputStreamWriter
字符转换流是字符流与字节流转换的桥梁,同时加入了编码转换

二、编码表的由来
计算机只能识别二进制数据,早期由来是电信号;
为了方便应用计算机,识别各个国家的文字;
就将各个国家的文字用数字来表示,并一一对应,形成一张表,这就是编码表。
三、常见的编码表

技术分享

注意:
1、Java语言char类型使用的是Unicode
2、UTF-8每一个字节的开头都加有标识头,加完后很容易区分。UTF-8中汉字用3个字节表示。
3、中文码表兼容ASCII码表(中文中有拼音)。

四、转换流的编码应用
1、可以将字符以指定编码格式存储。
2、可以对文本数据指定编码格式来解决。
3、指定编码的动作由构造函数完成,构造方法如下:

InputStreamReader(InputStream in, String charsetName) 
          创建使用指定字符集的 InputStreamReader
OutputStreamWriter(OutputStream out, String charsetName) 
          创建使用指定字符集的 OutputStreamWriter

五、编码与解码
1、定义
编码:String→byte[] —-> byte[] getBytes(Charset)
解码: byte[]→String—->String(byte[],charsetName)
String(byte[], int offset, int length,charsetName)
2.图解
技术分享

注意:

1)如果编码编错了,就无法再解码了。
2)之所以可以再解码是因为ISO8859-1不识别中文,解码的时候保持了数据的原样性。如果开始使用UTF-8解码,由于UTF-8支持中文,解码之后数据就发生了变化,不再是原有数据。
3)Tomcat服务器默认编码就是ISO8859-1,当Tomcat服务器出现乱码时,可以再解码还原数据。
4)用记事本打开文件是解码,因为电脑中的数据都是二进制文件。

3.“联通”现象:在记事本中存入联通,再次打开出现乱码

现象解释:
UTF-8有自己的标识头,如下:
技术分享

技术分享
联通的二进制数:
**110**00001
**10**101010
11001101
10101000

刚好“联通”的二进制代码刚好满足UTF-8的标示,再次打开记事本时,其就按UTF-8解码所以造成乱码。

JAVA基础——字符编码

标签:编码   字符   

原文地址:http://blog.csdn.net/itheimach/article/details/46402347

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!