一、为什么要进行编码的规范化??
举个例子,在一个国家的本地化系统中出现的一个字符,通过电子邮件传送到另外一个国家的本地化系统中,看到的就不是那个原始字符了,而是另外那个国家的一个字符或乱码,因为计算机里面并没有真正的字符,字符都是以数字的形式存在的,通过邮件传送一个字符,实际上传送的是这个字符对应的编码数字,同一个数字在不同的国家和地区代表的很可能是不同的符号,如十六进制的D6D0在中国大陆的本地化系统中显示为“中”这个符号,但在伊拉克的本地化系统就不知对应的是一个什么样的伊拉克字符了,反正人们看到的不是“中”这个符号。
为了解决各个国家和地区使用自不同的本地化字符编码带来的不便,人们将全世界所有的符号进行了统一编码,称之为Unicode编码。
GBK(中文):简体
GB2312(中文):GBK是GB2312的子集,包括简体和繁体
Unicode:世界通用的编码规范,java中使用的都是Unicode编码
二、编码转换示例
Unicode一统天下的局面暂时还难以形成,在相当长的一段时期内,人们看到的都是本地化字符编码与Unicode编码共存的景象。既然本地化字符编码与Unicode编码共存,那就少不了涉及两者之间的转化问题。
先介绍一个有用的方法:
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException使用指定的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。
代码:
File f = new File("g:\\1.txt");
OutputStream out = new FileOutputStream(f);
String str = "大家一起来学java语言";
byte[] b = str.getBytes("GB2312");
out.write(b);
out.close();