5

我们遇到了由此处描述的错误引起的问题: http://bugs.sun.com/view_bug.do?bug_id= 6183404

我已经使用自定义字符集实现了修复以修复不正确的映射。然而,这仍然不能解决我们正在使用的一个 Java 应用程序的问题,因为它被硬编码为使用标准的“GBK”字符集。

有没有办法java.nio.charset.spi.CharsetProvider覆盖现有的标准字符集?

4

1 回答 1

3

根据 中的这段代码Charset,您似乎无法覆盖standardProvider,因为它会在任何其他内容之前被搜索。

if ((cs = standardProvider.charsetForName(charsetName)) != null ||
    (cs = lookupExtendedCharset(charsetName))           != null ||
    (cs = lookupViaProviders(charsetName))              != null)

如果应用程序将字符集名称存储在一个字段中,您可以在应用程序启动之前通过反射做一些讨厌的事情来更改它。

于 2012-07-25T09:33:49.323 回答