java 中文字符 解编码

一个实例:

		 // 该java类默认为gb2312编码
		String str="你好abc";
		System.out.println("原串:"+str);
		byte[] bytes1=str.getBytes();//byte为8bit,-128到127
		System.out.print("gb2312:  ");
		for(byte b:bytes1){
			System.out.print(Integer.toHexString(b&0xff)+" ");
		}
		System.out.println();
		System.out.print("gbk:     ");
		byte[] bytes2=str.getBytes("gbk");
		for(byte b:bytes2){
			System.out.print(Integer.toHexString(b&0xff)+" ");
		}
		System.out.println();
		System.out.print("utf-8:   ");
		byte[] bytes3=str.getBytes("utf-8");
		for(byte b:bytes3){
			System.out.print(Integer.toHexString(b&0xff)+" ");
		}
		System.out.println();
		System.out.print("utf-16be:");
		byte[] bytes4=str.getBytes("utf-16be");
		for(byte b:bytes4){
			System.out.print(Integer.toHexString(b&0xff)+" ");
		}
		System.out.println();
		System.out.print("ISO-8859-1:");
		byte[] bytes5=str.getBytes("ISO-8859-1");
		for(byte b:bytes5){
			System.out.print(Integer.toHexString(b&0xff)+" ");
		}
		System.out.println();
		
		String str2=new String(bytes2);
		System.out.println(str2);
		String str3=new String(bytes3);
		System.out.println(str3);
		String str4=new String(bytes4);
		System.out.println(str4);
		String str5=new String(bytes4,"utf-16be");
		System.out.println(str5);
		String str6=new String(bytes5,"ISO-8859-1");
		System.out.println(str6);

  打印结果:

 

  分析:由上面例子可以知道中文“你好”根据各种字符编码标准得到的字节是不同的:

    1)gb2312和gbk相同,两个字节表示一个中文,实际上gb2312只支持6763个汉字,不是所有汉字都可以使用gb2312编码,而gbk是兼容gb2312的,而且可以表示更多的中文字符;

    2)utf-8用3个字节表示一个中文,一个字节表示一个字母;

    3)utf-16be(即Unicode编码)则是中文和英文字符都是2个字节;

    4)ISO-8859-1为单字节编码,范围0x00-0xff,从输出结果可以知道,因为“你”,“好”是中文,在码表中没有中文字符,字节都翻译为了3f,尽管在后面使用了iso-8859-1,翻译编码“3f 3f 61 62 63 ”只得到“??abc”,得不到原来的结果“你好”。ISO-8859-1为很多软件采用的默认编码,故而容易导致中文乱码


参考:点击打开链接


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值