我們最近將應用程序從WAS 7.0(在AIX上)移動到WAS 8.5.5(在Linux上)。從Websphere 7升級到Websphere時的編碼問題8.5.5
while ((i = request.getReader().read(buf, 0, buf.length)) != -1) {
sb.append(buf, 0, i);
}
過渡後然而,我們注意到,該應用程序不處理特殊字符 - 它有一對夫婦,使用在XML
XML是從標題檢索的形式發送數據的應用程序接口像è或©正確 - 他們是亂碼。
這對我來說就像一個編碼問題。任何人都可以指出需要檢查什麼來了解根本原因?
我在此進一步閱讀,我看到,我可以設置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作爲<?xml version="1.0" encoding="ISO-8859-1"?>
而另一個將其作爲<?xml version="1.0">
設定上述JVM設置,<?xml version="1.0">
被正確處理之後但在一個與設置爲ISO-8859-1的編碼不是。我完全迷失在這裏。
您應該使用十六進制查看器來準確地確定'亂碼'的含義,例如'我預期代碼爲0xE8(C)符號,但得到0x9E'' –