环境: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】

沪公网安备 31011502001064号
您必须登录才能发表评论。