JVM如何确定Linux上argv的(默认?)字符编码

JVM如何确定Linux上argv的(默认?)字符编码,第1张

概述JVM如何确定Linux上argv的(默认?)字符编码

Java有一个默认的字符编码 ,它在没有明确提供字符编码的上下文中使用。 它如何select编码的文档是模糊的:

默认字符集是在虚拟机启动时确定的,通常取决于底层 *** 作系统的语言环境和字符集。

该文档必须是模糊的,因为JVM使用的方法是系统特定的。

使用默认的字符编码往往是一个坏主意 , 最好使用明确指示的编码,或者对某些I / O始终使用相同的编码。 但是一个不可避免的使用默认字符编码似乎是用于命令行参数的字符编码。 在诸如linux的POSIX系统上,JVM的本地(C / C ++)代码将命令行参数作为C / C ++ char指针的空终止列表。 这应该被认为是字节指针,因为它们必须以某种(不清楚的)方式编码代码点。 JVM必须解释这些C / C ++ char (字节)序列,将它们转换成一系列Java char ,并赋予Java程序的main() 。 我假设JVM使用默认的字符编码。

在windows上,我无法使用cmd在我的数据库中看到utf8mb4字符

发送一个std :: wstring从“中国windows”发送到“阿拉伯语windows”

如何检查在我的程序运行的控制台上设置了什么字符编码?

在windows中将传统Mac OS日语编码转换为Unicode

Java,档案,linux和西里尔文

因此,我需要准确知道JVM如何确定特定系统(现代GNU / linux *** 作系统)的默认编码,因此我可以提供有关我的程序如何运行的用户文档,因此我的程序的用户可以预测它将如何performance。

我猜JVM检查一些环境variables,但哪些?

Chrome 10 / windows @ Font-face编码的麻烦

在windows上使用Perl获取当前系统本地编码

Python:阅读和印刷土耳其语字母的问题

在windows上用gulp编码问题

CP1242支持的语言

你可以看看java.nio.charset.Charset.defaultCharset()的源代码。 当我在我的系统(64位windows 7,Oracle JDK 8更新25)上这样做时,我看到:

public static Charset defaultCharset() { if (defaultCharset == null) { synchronized (Charset.class) { String csn = AccessController.doPrivileged( new GetPropertyAction("file.enCoding")); Charset cs = lookup(csn); if (cs != null) defaultCharset = cs; else defaultCharset = forname("UTF-8"); } } return defaultCharset; }

换句话说,它查看系统属性file.enCoding ,如果找不到匹配的Charset实例,则使用UTF-8 。

总结

以上是内存溢出为你收集整理的JVM如何确定Linux上argv的(默认?)字符编码全部内容,希望文章能够帮你解决JVM如何确定Linux上argv的(默认?)字符编码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1289940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存