设置默认Java字符编码

如何以编程方式正确设置JVM(1.5.x)使用的默认字符编码

我读过-Dfile.encoding=which曾经是旧JVM的发展方向。我没有那种奢侈,因为我不想进去

我试过:

System.setProperty(“file.encoding”、“UTF-8”);

属性被设置,但它似乎不会导致下面的最后一个getBytes调用使用UTF8:

System.setProperty(“file.encoding”、“UTF-8”);
字节内字节[]=新字节[1024];
FileInputStream fis=新的FileInputStream(“response.txt”);
fis.read(以字节为单位);
FileOutputStream fos=新的FileOutputStream(“response-2.txt”);
字符串输入=新字符串(以字节为单位,“UTF8”);
fos.write(in.getBytes());

不幸的是,JVM启动时必须指定file.encoding属性;输入main方法时,String.getBytes()InputStreamReaderOutputStreamWriter的默认构造函数使用的字符编码已被永久缓存

AsEdward Grech指出,在这样的特殊情况下,可以使用环境变量JAVA\u TOOL\u OPTIONS来指定此属性,但通常是这样做的:

java-Dfile.encoding=UTF-8…com.x.Main

Charset.defaultCharset()将反映对file.encoding属性的更改,但核心Java库中需要确定默认字符编码的大多数代码不使用此机制

编码或解码时,可以查询file.encoding属性或Charset.defaultCharset()以查找当前默认编码,并使用适当的方法或构造函数重载指定它

发表评论