标签:
引出编码表:
我们知道,初学IO的时候使用字节流的read()针对中文操作输出的时候可能出现中文乱码。这是为什么呢?因为myeclipes在默认情况下,使用的编码表示ASCII表,中文是两个字节存储的,ASCII表示一个字节代表一个字符,强行将中文拆分成两个字节进行解析就会找不到对应字符出现?或者找到的字符不可能是中文的。ASCII码讲中文拆分成两个字节。第一个字节的对应位置一定是负数,第二个常见是负数,可能是正数。
编码表:
由现实世界的字符和其对应的数值组成的一张表,用来解析和转换各种字符
常见的编码表
ASCII码表:7位表示一个数据,一个字节表示一个字符。最高位是符号位
‘a‘ 97 ’A‘ 65 0 48
ISO-8859-1:拉丁码表 8位表示一个数据
GB2312:中国的简体中文编码表
GBK:中国的简体中文编码表升级
GB18030:GBK的取代版本
BIG-5:繁体中文编码表,俗称“大五码”
Unicode:国际标准码,融合了各种文字
所有文字都用两个字节表示,java语言使用的就是Unicode编码
UTF-8:国际化编码表,升级版
最多能用三个字节表示一个字符。就是能用一个字节表示的字符就使用一个字节表示(兼容ASCII),一个用不了的就用两个,实在还不行就使用三个。
编码问题引发小例子:
比如,中国在gbk编码表示的是 10000 和20000
直接到日本的话,日本编码使用shift-JIS 10000 20000分别代表的是か ら,转换过去就曲解了原来的含义了。
标签:
原文地址:http://www.cnblogs.com/aigeileshei/p/5573707.html