Java中的编码问题

一、各种编码所占的字节空间:

      gbk编码:        中文占 2 个字节,英文占 1 个字节;   Java中项目的默认编码方式;

      utf-8编码:      中文占  3个字节,英文占 1 个字节;

      utf-16be编码:中文占 2个字节,英文占  2 个字节;   Java是utf-16be编码


二、当你的字节序列是某种编码方式时,这个时候想把字节序列变成字符串时,

       也需要该种编码方式,否则会出现乱码;


三、文本文件就是字节序列,可是是任意编码方式,但如果我们在中文机器上直接穿件文本文件,那么该文本文件只认        识ANSI编码的文件。

    

       有兴趣的小伙伴们可以尝试在自己的机器上新建 联通.txt  文本文件,里面内容也为“联通”,以及  联.txt   文本文件,里面内容为“联”,再次新建  联想.txt  文本文件,里面内容为“联想”;保存,然后打开,看看有谁变成了乱码,真的非常有趣。选择文件菜单,另存为选项,观察编码方式的不同;


四、简单的代码演示:


package com.bluesky;

public class EnCode {
	
	public static void main(String[] args) throws Exception {
		String s ="蓝天abc";
		byte [] byte1 = s.getBytes();//项目默认为gbk编码
		for(byte b:byte1){
			System.out.print( Integer.toHexString(b & 0xff)+" ");
		}
		
		System.out.println();
		
		byte [] byte2 =s.getBytes("gbk");//gbk编码中文占两个字节,英文占一个字节,项目默认
		for(byte b:byte2){
			System.out.print( Integer.toHexString(b & 0xff)+" ");
		}
		
		System.out.println();
		//utf-8编码中文占三个字节,英文占一个字节
		byte [] byte3 =s.getBytes("utf-8");
		for(byte b :byte3){
			System.out.print(Integer.toHexString(b & 0xff)+" ");
		}
		//java是双字节编码,utf-16be编码,中文占用两个字节,英文占用两个字节
		System.out.println();
		byte [] byte4 =s.getBytes("utf-16be");
		for(byte b :byte4){
			System.out.print(Integer.toHexString(b & 0xff)+" ");
		}
		//当你的字节序列是某种编码时,这个时候想把字节序列变成字符串时,也需要用这种形式编码
		//否则会出现乱码
		System.out.println();
		String str = new String(byte4);//采用项目默认编码
		System.out.println(str);
		
		String str1 = new String(byte4,"utf-16be");//指定为utf-16be编码
		System.out.println(str1);
	}

}


运行结果:




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值