环境:JDK1.8
以下写法,会因为环境不一样,导致结果不一致。
1.String的getBytes()无参方法。
原因:getBytes()会根据【System.getProperty(“file.encoding”))】的编码,来执行。
package zz; public class Test { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub // ni hao String str = "\u4f60\u597d"; System.out.println("default encoding:" + System.getProperty("file.encoding")); System.out.println(str); System.out.println("default length:" + str.getBytes().length); System.out.println("GBK length:" + str.getBytes("GBK").length); System.out.println("UTF-8 length:" + str.getBytes("UTF-8").length); } }
以上代码编译为class文件之后,使用【java -Dfile.encoding=GBK zz.Test】,结果为
default encoding:GBK 你好 default length:4 GBK length:4 UTF-8 length:6
使用【java -Dfile.encoding=UTF-8 zz.Test】,结果为
default encoding:UTF-8 你好 default length:6 GBK length:4 UTF-8 length:6
在eclipse中,以下操作会更改【file.encoding】
您必须登录才能发表评论。