计算机中所有内容都是二进制形式存在的.
字符
各种文字和符号.字符是在图形意义上而存在的,因为任何符号都是可视的.
字符集
字符的集合.
字符编码
按照一定的规则,把字符对应到二进制数值的过程.
字符解码
按照一定的规则,把二进制数值对应到字符的过程.
编码与解码是相逆过程.
字符编码转码
字符在计算机中本质上就是一个数值.字符串在计算机中本质上就是一个数值串.
字符转码即把一个数值按照规则转换到另一个数值.
可以假想存在一个映射f:A->B. A,B分别为16进制数的集合.代表字符集编码.f映射为一一映射.即f为一个函数y=f(x).x∈A,y∈B.
映射规则:x按照A字符集编码的规则解码得到字符,然后按照B字符集编码规则将字符编码得到数y.
按照上述映射规则,即可以进行字符转码.
乱码
乱码指的是计算机系统不能显示正确的字符.而显示其他无意义的字符或空白.这样所显示出来的文字统称为乱码.
乱码产生的原因
1.一般是程序错误解码造成的.
例如:
浏览器把GBK码当成是Big5码显示(即数值串要按照GBK解码才能显示原有的信息,但是却按照了Big5解码得到了错误信息).
电子邮件程序把对方传来的邮件错误解码。如果在发送时编码错误,收件者的电邮程序是不能解码的,需要寄件者的电邮程序重新编码再寄。
2.字型档案(font file)不对
3.来源编码错误,或文件受到破坏。
4.一种语言版本的操作系统安装了另外一种语言版本的应用程序,或者应用程序安装的升级补丁的语言版本与应用程序原来安装的语言版本不一致.
5.早期单字节的应用程序在打开双字节语言的文件时不能正确识别文字的分割,在换行的地方把一个字从中分成两段,导致紧接在后面的整个一行全部都是乱码。
6.低版本的应用程序不能识别高版本的程序创建的文件。
Java中字符转码的方法
String(byte[] bytes, String charsetName)
String的一个构造方法.
将bytes数值串按照charsetName的编码规则解码得到一串字符,再将字符按照Unicode编码规则编码得到新的数值串,并返回新的数值串.
说明:Java默认Uncode编码.返回的数值串是Java可直接识别的.即String.
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException
String的一个方法.getBytes()方法还有很多重载函数.具体参照JDK文档.
将字符串实际的数值串按照Unicode编码规则解码得到一串字符,再将字符按照charsetName的编码规则解码得到新的数值串,并以byte数组的形式返回新数值串.