use*_*722 50 java encoding jvm character-encoding
UTF-8是Java中的默认编码吗?
如果没有,我怎么知道默认使用哪种编码?
And*_*yle 86
JVM的默认字符集是它运行的系统的字符集.对此没有具体的值,您通常不应该依赖于默认编码是任何特定值.
它可以在运行时通过Charset.defaultCharset()
,如果这对你有用,但实际上你应该明确指出在你可以这样做时明确指定编码.
Bri*_*new 29
请注意,您可以使用容易混淆的属性更改JVM的默认编码file.encoding
.
如果您的应用程序对编码特别敏感(可能通过使用暗示默认编码的API),那么您应该在JVM启动时将其明确设置为一致(已知)值.
小智 9
我确信这是特定于JVM的实现,但我能够通过执行以下方式"影响"我的JVM的默认文件.编码:
export LC_ALL=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
(在Ubuntu 12.04上运行java版本1.7.0_80)
此外,如果您从unix控制台键入"locale",您应该会在那里看到更多信息.
所有的功劳都归功于http://www.philvarner.com/2009/10/24/unicode-in-java-default-charset-part-4/
您可以使用它来打印出JVM默认值
import java.nio.charset.Charset;
import java.io.InputStreamReader;
import java.io.FileInputStream;
public class PrintCharSets {
public static void main(String[] args) throws Exception {
System.out.println("file.encoding=" + System.getProperty("file.encoding"));
System.out.println("Charset.defaultCharset=" + Charset.defaultCharset());
System.out.println("InputStreamReader.getEncoding=" + new InputStreamReader(new FileInputStream("./PrintCharSets.java")).getEncoding());
}
}
Run Code Online (Sandbox Code Playgroud)
编译并运行
javac PrintCharSets.java && java PrintCharSets
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
96946 次 |
最近记录: |