日期:2014-05-20  浏览次数:20818 次

关于字符集常量类的问题?
我们在编程时经常会转换字符集,比如UTF-8,iso-8859-1.之类的。
往往会采用硬编码。我在jdk里找了半天,这些值到底是哪个类的常量   。知道的告诉我一下。谢谢。

------解决方案--------------------
这些字符串本身在Java中没有定义常量,但是可以在Java中可以获得当前系统可用的字符集,好项是在CharacterSet类中。
------解决方案--------------------
sun.nio.cs.ext 包下有扩展的字符集类,在 %JRE_HOME%/lib/charsets.jar 中
sun.nio.cs 包下有标准的字符集类,在 %JRE_HOME%/lib/rt.jar 中

这些类属于 Java 的运行环境(Java 运行的基础)类库,不能在 JDK API 的帮助中查到。
------解决方案--------------------

楼主啊,字符集名在 Java 中定义的本身就不是常量。而是存储在一个 Map 之中的,通过存诸在 Map 中的名字,再去找到具体适用的字符集类再进行字符解析的。在这两个类中 sun.nio.cs.StandarCharsets、sun.nio.cs.ext.ExtendedCharsets 就是存储了些 map,像你上面调用 Charset.availableCharsets(); 这个方法也是从上面那两个类中获得的啊。
---------
BINGO~