java字符串的getBytes()在Windows和Linux上不一样

日期:2016-06-01 22:06:33

留言:1

分类:经验心得

标签: Java Linux

在java中比较常用到String的getBytes()这个方法,但是在Windows和Linux的结果会不一样,例如以下这段代码:

String str = "测试";

byte[] bytes = str.getBytes();

System.out.println(bytes.length);

在Windows上运行,结果是4,在Linux上运行,结果是6。

原因是因为在Windows中文操作系统上getBytes()使用的默认编码是GBK,英文操作系统没有测试过,但是在Linux操作系统上getBytes()使用的默认编码是UTF-8,GBK一个汉字占2个字节,UTF-8是3个,所以结果就不一致了,可以通过指定编码方法解决,写法如下:

String str = "测试";

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

System.out.println(bytes.length);

指定编码会抛出UnsupportedEncodingException异常,需要自己处理。

给我留言
留言表
tsiyuki :
在WindowsOS上    Unicode 文本 如果存储为 文件  例如 .txt   会产生 BOM 头. 也有多占 几个字节.  而 *inx  就不会~    参考  i18n 2017-02-06 16:39:23