该主题已成为许多讨论的目标,但我们仍然看到新的主题出现。我的情况如下:
在 Linux 服务器上运行的 Java 框架,其中 UTF-8 是 JVM 中的默认字符编码。该框架由一些接收要处理的 Tibco RV 消息的服务组成。其中一些消息包含非 ASCII 字符并从 Windows 服务器发送,ISO8859-1 是创建消息时使用的编码。现在,当从 Tib rv 消息中提取数据时,有问题的字段作为 Java 对象“到达”并且需要转换为字符串......在这里我还不能提取包含非的 ISO8859-1 字符串以正确的方式将 ASCII 字符(瑞典语“å”、“ä”、“ö”)转换为 UTF-8 字符串。我尝试过使用以下方法:
String isoStreet = new String(response.get("street").toString().getBytes(StandardCharsets.ISO_8859_1),java.nio.charset.StandardCharsets.UTF_8);
我也尝试过在 java.nio 包中使用编码器/解码器,但没有成功。
同样有趣的是,我正在使用 PuttY 连接到托管和运行服务的服务器。从那里我有可能从 shell 发出直接的 Tibco rv 请求(使用 tibcorvsend 客户端),似乎我需要在登录之前在 PuttY(Window_>Translation)中将远程字符集设置为 ISO8859-1服务器并发出 Tib rv 请求 - 完成后,这些非 ASCII 字符在响应中显示正确,无论我在远程 Linux 服务器中设置什么编码。在这种情况下,使用 'export LC_ALL=en_US.UTF-8' 或 'export LC_ALL=sv_SE.iso88591' 无关紧要......只有我在 PuttY 中设置的远程编码......
这应该意味着响应消息看起来不错,并且至少 shell 能够输出正确的字符。但是当在 Java VM 内部(使用 Java 服务)时,我猜在 Watch 视图中调试和查看响应对象(不希望转换为字符串)时,响应字段被悄悄地推送到字符串中......不确定你是否可以关注我,如果不是,我可能会在需要时尝试更清楚......
关于这个问题的任何意见,任何人
问候 /R