Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM的默认编码是什么?_Java_Encoding_Character Encoding_Jvm - Fatal编程技术网

Java JVM的默认编码是什么?

Java JVM的默认编码是什么?,java,encoding,character-encoding,jvm,Java,Encoding,Character Encoding,Jvm,UTF-8是Java中的默认编码吗? 如果没有,我怎么知道默认情况下使用的是哪种编码?它将取决于语言环境。不同的语言环境,不同的默认编码。JVM的默认字符集是它运行的系统的字符集。这个没有特定的值,您通常不应该依赖默认编码作为任何特定的值 它可以在运行时通过Charset.defaultCharset()访问,如果这对您有任何用处的话,尽管您确实应该在可以这样做时始终明确指定编码。请注意,您可以使用名称混乱的属性file.encoding更改JVM的默认编码 如果您的应用程序对编码特别敏感(可能

UTF-8是Java中的默认编码吗?

如果没有,我怎么知道默认情况下使用的是哪种编码?

它将取决于语言环境。不同的语言环境,不同的默认编码。

JVM的默认字符集是它运行的系统的字符集。这个没有特定的值,您通常不应该依赖默认编码作为任何特定的值


它可以在运行时通过
Charset.defaultCharset()
访问,如果这对您有任何用处的话,尽管您确实应该在可以这样做时始终明确指定编码。

请注意,您可以使用名称混乱的属性
file.encoding
更改JVM的默认编码

如果您的应用程序对编码特别敏感(可能是通过使用暗示默认编码的API),那么您应该在JVM启动时将其显式设置为一致(已知)值。

有三种“默认”编码:

  • file.encoding:
    System.getProperty(“file.encoding”)

  • java.nio.Charset:
    Charset.defaultCharset()

  • 以及InputStreamReader的编码:
    InputStreamReader.getEncoding()


您可以在上阅读更多信息。

我确信这是特定于JVM实现的,但我能够“影响”我的JVM的默认文件。通过执行:

export LC_ALL=en_US.UTF-8
(在Ubuntu 12.04上运行java版本1.7.0_80)

另外,如果您在unix控制台中键入“locale”,您应该会在那里看到更多信息


所有的功劳都归

您可以使用它来打印JVM默认值

编译并运行


要获取默认java设置,只需使用:

java -XshowSettings 

请注意,必须在JVM启动时指定
file.encoding
(即作为cmdline参数-Dfile.encoding或通过JAVA_工具_选项);您可以在运行时设置它,但这并不重要。如果你是对的,我觉得有点奇怪,说它总是UTF-16。UTF-16是JVM内部表示文本的方式。默认编码确定JVM如何解释从文件读取的字节(例如,使用
文件读取器
)。检查
Charset.defaultCharset()
源代码。它读取
file.encoding
属性,否则使用UTF-8。因此它取决于主机操作系统的编码方式?您是如何检查它的?我找不到证据证明Java对区域设置字符串中的编码有任何关注。仅来自
file.encoding
属性。@ArtemNovikov-是,但是
file.encoding
的默认值是什么?它在
java.lang.System.initProperties
中根据
sprops.encoding
的值进行初始化,其中
sprops
是本机函数
GetJavaProperties()
返回的结构,其实现因平台而异。例如,在Windows版本中,它调用
GetUserDefaultLCID()
,然后调用
GetLocaleInfo(lcid,LOCALE\u IDEFAULTANSICODEPAGE,…)
来查找用户的默认ANSI代码页并使用它。在Unix平台上,它解析
setlocale(LC\u CTYPE,NULL)
的返回。。。。有关详细信息,请参阅和。
javac PrintCharSets.java && java PrintCharSets
java -XshowSettings