码迷,mamicode.com
首页 > 其他好文 > 详细

文件的编码--随笔

时间:2016-04-27 20:25:21      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

  首先是eclipse的默认编码,点击file->properties可以看到eclipse的默认编码是GBK.

  如何获取一个字符串的编码呢?

  如:

  String str = "D1篇笔记";

  byte[] b1 = str.getBytes("gbk");

  for (byte b : b1) {

    System.out.print(Integer.toHexString(b & 0xff) + "   ");

  }  

  输出结果: 44 31 c6 aa b1 ca bc c7,其中字母和数字为一个字节表示,汉子为两个字节表示

  先将字节以16进制(int)的方式表示,我们知道,int在java中占用4个字节,所以将一个字节转化为int,前面将会补上24个0,与上一个FF转化为8位

  但是目前运用比较广泛的是utf-8,也用上面的方法获取一下编码

  

  byte[] b2 = str.getBytes("utf-8");

 

  for (byte b : b2) {

 

    System.out.print(Integer.toHexString(b & 0xff) + "   ");

 

  }  

 

  输出结果为:44 31 e7 af 87 e7 ac 94 e8 ae b0.其中字母和数字占用一个字节,汉字占用三个字节

  而在java中使用的是双字节编码 utf-16be (最低地址存放高位字节)来存储数据的,即大端存储

  如法炮制  

  byte[] b3 = str.getBytes("utf-16be");

  for (byte b : b3) {

    System.out.print(Integer.toHexString(b & 0xff) + "   "); 

  } 

  输出结果为:0 44 0 31 7b c7 7b 14 8b b0 ,可以看出字母数字汉子都是占用两个字节

 

  所以,如果将文本编码转化为字符串时不按对应的编码方式转化的话,则会出现乱码

  使用System.out.println(new String(b3, "utf-16be);可将字节转换回去

 

文件的编码--随笔

标签:

原文地址:http://www.cnblogs.com/BlogOfWhisperoy/p/5439955.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!