java - 从语言环境到 ansi 代码页再到 java 字符集?

标签 java localization character-encoding locale

有没有办法从 ANSI 代码页获取 java.nio.charset.Charset 并从语言环境获取 ansi 代码页?例如,如果我有区域设置“en_US”,我想要字符集“cp1252”,这样我就可以调用

private final Charset CS1252 = Charset.forName("cp1252");

或者当我有日语的语言环境“ja_JP”时,我想获得相应的字符集,比如

private final Charset CS932 = Charset.forName("ms932");

我如何在 Java 中实现它?所以我需要的是像 getCharsetForLocale(java.util.Locale loc) 这样的方法

最佳答案

你不能,这没有意义。实际上,任何语言都可以用几种不同的字符编码来编写,例如英语可以用:ASCII、ISO8859-1、ISO-8859-15、Windows 1252、UTF-7、UTF-8、UTF-16、UTF- 32 以及更多,例如基本上包括所有 Windows 代码页。

我不确定你在找什么,所以让我建议一下:

  1. 如果您希望保存数据,请使用 UTF-8 而不管 Locale。总是。是的,总是。不用担心空间,对于许多语言来说它足够高效而且磁盘空间很便宜。

  2. 如果您想知道用户可能使用哪种字符编码,则认为它们仅限于一种是不正确的。相反,您可能会考虑使用 ICU Charset Detector 检测编码例如(阅读更多关于检测的信息 here )。

  3. 如果您想知道系统的当前代码页,最简单的方法(并且它独立于操作系统!)是调用 Charset.defaultCharset()

下次请尽量先描述你的问题,你想达到什么目的,你已经尝试过什么。

关于java - 从语言环境到 ansi 代码页再到 java 字符集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10697122/

相关文章:

cocoa - 动态覆盖首选字符串本地化以进行测试

php - 在 MySQL DB : UTF8 Latin1 illegal collation 中查找数据的*实际*字符编码

mysql - MySQL 5 中列级别的 CHARSET

JavaFX:如何在某种文本区域中存储和格式化多个段落?

java - Android Wear 健康传感器 Moto360

wpf - .net wpf4 应用程序的 Locbaml 本地化

mysql - UTF-8字符有问题;我看到的不是我存储的

java - java同时出现多个异常

java - 由于重新平衡,无法完成提交

ios - 有没有办法在Twine Localization文件中发表评论?