我们遇到了由此处描述的错误引起的问题: http://bugs.sun.com/view_bug.do?bug_id= 6183404
我已经使用自定义字符集实现了修复以修复不正确的映射。然而,这仍然不能解决我们正在使用的一个 Java 应用程序的问题,因为它被硬编码为使用标准的“GBK”字符集。
有没有办法java.nio.charset.spi.CharsetProvider
覆盖现有的标准字符集?
我们遇到了由此处描述的错误引起的问题: http://bugs.sun.com/view_bug.do?bug_id= 6183404
我已经使用自定义字符集实现了修复以修复不正确的映射。然而,这仍然不能解决我们正在使用的一个 Java 应用程序的问题,因为它被硬编码为使用标准的“GBK”字符集。
有没有办法java.nio.charset.spi.CharsetProvider
覆盖现有的标准字符集?
根据 中的这段代码Charset
,您似乎无法覆盖standardProvider,因为它会在任何其他内容之前被搜索。
if ((cs = standardProvider.charsetForName(charsetName)) != null ||
(cs = lookupExtendedCharset(charsetName)) != null ||
(cs = lookupViaProviders(charsetName)) != null)
如果应用程序将字符集名称存储在一个字段中,您可以在应用程序启动之前通过反射做一些讨厌的事情来更改它。