有没有办法从 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 代码页。
我不确定你在找什么,所以让我建议一下:
如果您希望保存数据,请使用 UTF-8 而不管 Locale。总是。是的,总是。不用担心空间,对于许多语言来说它足够高效而且磁盘空间很便宜。
如果您想知道用户可能使用哪种字符编码,则认为它们仅限于一种是不正确的。相反,您可能会考虑使用 ICU Charset Detector 检测编码例如(阅读更多关于检测的信息 here )。
如果您想知道系统的当前代码页,最简单的方法(并且它独立于操作系统!)是调用
Charset.defaultCharset()
。
下次请尽量先描述你的问题,你想达到什么目的,你已经尝试过什么。
关于java - 从语言环境到 ansi 代码页再到 java 字符集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10697122/