繁体   English   中英

从Websphere 7升级到Websphere 8.5.5时的编码问题

[英]Encoding issue when upgrading from Websphere 7 to Websphere 8.5.5

我们最近将应用程序从WAS 7.0(在AIX上)迁移到WAS 8.5.5(在Linux上)。 它与几个应用程序接口,这些应用程序以xml的形式发送数据

使用以下命令从标题中检索XML:

while ((i = request.getReader().read(buf, 0, buf.length)) != -1) {
            sb.append(buf, 0, i);
        }

但是,转换后,我们注意到该应用程序未正确处理è©等特殊字符-它们乱码。

在我看来,这似乎是一个编码问题。 任何人都可以指出需要检查哪些内容以了解根本原因吗?

我正在进一步阅读,我发现可以将JVM参数设置为

-Dclient.encoding.override=UTF-8

始终使用UTF-8。 这是一个好习惯吗?

编辑

Locale output in Linux

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Locale output on AIX
LANG=en_US
LC_COLLATE="en_US"
LC_CTYPE="en_US"
LC_MONETARY="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_MESSAGES="en_US"
LC_ALL=

一个应用程序以<?xml version="1.0" encoding="ISO-8859-1"?>发送xml,另一个应用程序以<?xml version="1.0">

设置上述JVM设置后,将正确处理<?xml version="1.0"> ,但不会正确处理编码设置为ISO-8859-1的<?xml version="1.0"> 我在这里完全迷路了。

看起来您的应用程序未编写为使用特定的编码,因此使用了会话的默认设置。

使用locale在AIX和Linux上检查语言locale 在Linux上,可能类似于LANG=en_US.UTF-8

为了使您的应用程序在Linux上与在AIX上相同,在Linux上将语言环境设置为与AIX上相同的值。

通常,使用具有Unicode意识的应用程序不是一个坏主意。 但是在某些情况下,您需要坚持使用另一种编码,例如对于某些旧系统,使用LATIN-1。 然后,在您的代码中,您明确需要在需要的地方选择此编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM