我有相当多的过程,我们要通过在我们的应用程序中显示一些电子邮件通信。试图保持它尽可能通用...无法解码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中正确显示的任何建议?