Rob*_*ert 23 java platform character-encoding
一些遗留代码依赖于平台的默认字符集进行翻译.对于"西方世界"中的Windows和Linux安装,我知道这意味着什么.但是考虑到俄罗斯或亚洲平台,我完全不确定他们平台的默认字符集是什么(只是UTF-16?).
因此,我想知道执行以下代码行时会得到什么:
System.out.println("Default Charset=" + Charset.defaultCharset());
Run Code Online (Sandbox Code Playgroud)
编辑: 我不想在这里讨论charsets的问题及其与unicode的区别.我只是想收集哪些操作系统将导致什么特定的字符集.请仅发布具体值!
Aar*_*lla 28
这是用户特定的设置.在许多现代Linux系统上,它是UTF-8.在Mac上,它是MacRoman.在Windows上的美国,它通常是CP1250,在欧洲它是CP1252.在中国,您经常会找到简体中文(Big5或GB*).
但这是系统默认值,每个用户可以随时更改.这可能是解决方案:使用系统属性启动应用程序时设置编码file.encoding
看到这个答案如何做到这一点.我建议将其放入一个启动应用程序的小脚本中,这样用户默认就不会受到污染.
对于"西方世界"中的Windows和Linux安装,我知道这意味着什么.
可能不如你想的那么好.
但考虑到俄罗斯或亚洲平台,我完全不确定他们平台的默认字符集是什么
通常它是在他们的国家历史上使用的任何编码.
(只是UTF-16?).
绝对不是.计算机使用在Unicode标准存在之前广泛传播,并且每个语言区域开发了一种或多种可以支持其语言的编码.那些在ASCII之外需要少于128个字符的人通常会开发一个"扩展ASCII",其中许多最终标准化为ISO-8859,而其他人则开发了双字节编码,通常是几个竞争编码.例如,在日本,电子邮件通常使用JIS,但网页使用Shift-JIS,某些应用程序使用EUC-JP.在Java中,任何这些都可能作为平台默认编码遇到.
这都是一个巨大的混乱,这正是Unicode开发的原因.但混乱还没有消失,我们仍然必须处理它,而不是应该对什么编码给定的字节串被解释为文本的任何假设是,没有这样的东西作为纯文本.
归档时间: |
|
查看次数: |
31206 次 |
最近记录: |