我有相當多的過程,我們要通過在我們的應用程序中顯示一些電子郵件通信。試圖保持它儘可能通用...無法解碼javascript工具提示中的十六進制值
- 我們通過XML - 獲得的XML應答字符串建立到服務的請求,發送字符串的方法,以編碼任何無效字符如下:
public static String convertUTF8(String value) {
char[] chars = value.toCharArray();
StringBuffer retVal = new StringBuffer(chars.length);
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
int chVal = (int)c;
if (chVal > Byte.MAX_VALUE) {
retVal.append("&#x").append(Integer.toHexString(chVal)).append(";");
} else {
retVal.append(c);
}
}
return retVal.toString();
}
然後我們發送一個字符串的是結果的另一種方法,以消除任何其他無效字符:
public static String removeInvalidCharacters(String inString)
{
if (inString == null){
return null;
}
StringBuffer newString = new StringBuffer();
char ch;
char c[] = inString.toCharArray();
for (int i = 0; i < c.length; i++)
{
ch = c[i];
// remove any characters outside the valid UTF-8 range as well as all control characters
// except tabs and new lines
if ((ch < 0x00FD && ch > 0x001F) || ch == '\t' || ch == '\n' || ch == '\r')
{
newString.append(ch);
}
}
return newString.toString();
}
- 這個字符串然後通過SAXParser的 0「unmarshal'ed」
- 然後將對象發送回我們的Display動作,該動作生成對調用jsp/javascript的響應以創建頁面。
問題是有些文本可能包含無法正確處理的字符。以下是最終呈現在JSP就好:
<PrvwCommTxt>This is a new test. Have a*&#xc7;&#xb4;)&#xa1;.&#xf1;&#xc7;&#xa1;.&#xf1;*&#xc7;&#xb4;)...</PrvwCommTxt>
作爲表示了:「這是一個新的測試有一個* C')¡.ñÇ¡。」在瀏覽器中。
-The以下在工具提示顯示出來,同時將鼠標懸停在上面的文字:
<CommDetails>This is a new test. Have a*Ç´)¡.ñÇ¡.ñ*Ç´)¡.ñ*´)(¡.ñÇ(¡.ñÇ* Wonderful Day!</CommDetails>
然後,這顯示了不正確時在JavaScript與所有的十六進制值,而不是被正確渲染工具提示呈現。
有關如何使未知字符在JavaScript中正確顯示的任何建議?