关于字符编码的一些介绍

来源:互联网 发布:osumania 知乎 编辑:程序博客网 时间:2024/05/16 14:07


我们通常使用的一些字符编码格式:


ASCII:美国标准信息交换码
 用一个字节的七位可以表示


ISO8859-1:拉丁码表。欧洲码表
用一个字节的八位表示


GBK2312:中国的中文编码表


GBK:中国的中文编码表升级,融合了更多的中文字符


Unicode:国际标准码,融合了多种文字
  所有文字都用两个字节来表示,java语言使用的就是Unicode
Utf_8:最多用三个字节来表示一个字符。



对于字符编码涉及到的无非就是编码和解码


编码: String----》string.getBytes();

解码:String.getBytes----->String


对于用GBK编码的文件,不能用utf-8解码,因为GBK编码,每个字符用两个字节表示,而utf-8用三个字节表示
所以,当用utf-8解码时,其解出来的码已经不是原来的码啦。解出来的码必然比原来的码多,当你再用GBK编码
方式对乱码进行解码时,已经解不出最先输入的值啦!因为编码的值以及数目已经改变,GBk编码可以用ISO8859-1
进行解码,就算变成乱码,也可以用gbk再解码。因为iso用的是一个字节表示一个字符

如下例:
 

public class EncodingType
{




/**
* @param args
* @throws UnsupportedEncodingException 
* @throws Exception 
*/
public static void main(String[] args) throws UnsupportedEncodingException
{
// TODO Auto-generated method stub

String str="哈哈";

//编码
byte[] by=str.getBytes("GBK");
for(byte b:by)
{
System.out.print(b+" ");
}
System.out.println();
//解码

// String str2=new String(by, "UTF-8");
// byte[] by2=str2.getBytes("UTF-8");
// for(byte b:by2)
// {
// System.out.print(b+" ");
// }
// System.out.println();
// System.out.println(str2);


//解码
String str2=new String(by, "ISO8859-1");

//编码
byte[] by2=str2.getBytes("ISO8859-1");


System.out.println(str2);
for(byte b:by2)
{
System.out.print(b+" ");
}
System.out.println();

// 解码

System.out.println(new String(by2,"GBK"));


}


}




原创粉丝点击