[英]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.