3

代码 :

import java.nio.charset.Charset;

public static Charset lookup(final String name) {
    if (name == null) {
        return null;
    }
    try {
        Charset charset = Charset.forName(name); 
        if (charset != null) {
            Charset superset = map.get(charset);
            if (superset != null) {
                charset = superset;
            }
        }
        return charset;
    } catch (IllegalCharsetNameException ex) {
        log.warn("Exception caught", ex);
        return null;
    } catch (UnsupportedCharsetException ex) {
        return null;
    }
} 

当 Charset.forName(name); 的“名称”为“UTF-7”时,就会出现问题。

我总是在我的 Linux 平台上得到 IllegalCharsetNameException。

但在我的 Windows 平台上看起来还可以。

两个平台有相同的源代码和java版本

java 版本“1.7.0_17”Java(TM) SE 运行时环境(构建 1.7.0_17-b02)Java HotSpot(TM) 64 位服务器 VM(构建 23.7-b01,混合模式)

我不知道如何解决它..

谢谢 !!

4

2 回答 2

1

这是Java中的一个错误,您对此无能为力

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4304013

它似乎已解决,但我对此没有信心

于 2013-10-11T07:25:35.493 回答
0

@RamonBoza 找到了与此相关的最终“错误”数据库条目。

它实际上是一个 RFE,要求将 UTF-7 支持添加为核心功能;即在所有平台上。

它已被关闭,关闭代码为“不会修复”。这意味着该问题尚未解决,并且将来可能不会解决。

RFE 评论表明您应该寻求第三方通过标准字符集 API/SPI 添加对 UTF-7 的支持。谷歌搜索应该找到合适的实现;例如,你可以试试这个开源的:http ://www.freeutils.net/source/jcharset/


是否将此不一致称为“错误”取决于您,但我将其称为功能。Java 文档不宣传支持的 UTF-7。

于 2013-10-11T08:14:32.277 回答