gpt4 book ai didi

java - 无法解码 JavaScript 工具提示中的十六进制值

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:21 27 4
gpt4 key购买 nike

为了在我们的应用程序中显示一些电子邮件通信,我经历了相当多的过程。尝试使其尽可能通用......

-我们通过 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“解码”该字符串
  • 然后该对象被发送回我们的 Display 操作,该操作生成对调用 jsp/javascript 的响应以创建页面。

问题是某些文本可能包含无法正确处理的字符。以下内容最终在 JSP 上呈现得很好:

<PrvwCommTxt>This is a new test.  Have a*&amp;#xc7;&amp;#xb4;)&amp;#xa1;.&amp;#xf1;&amp;#xc7;&amp;#xa1;.&amp;#xf1;*&amp;#xc7;&amp;#xb4;)...</PrvwCommTxt>

显示为“这是一项新测试。有a*Ç´)¡.ñÇ¡。”在浏览器中。

-将鼠标悬停在上述文本上时,以下内容会显示在工具提示中:

<CommDetails>This is a new test.  Have a*Ç´)¡.ñÇ¡.ñ*Ç´)¡.ñ*´)(¡.ñÇ(¡.ñÇ* Wonderful Day!</CommDetails>

当使用所有十六进制值在工具提示 JavaScript 中呈现时,此内容显示不正确,并且未正确呈现。

关于如何使未知字符在 JavaScript 中正确显示有什么建议吗?

最佳答案

Get the XML reply string, send the string to a method to encode any invalid characters as follows:

您应该使用Apache Commons Lang StringEscapeUtils#escapeXml()为此。

// remove any characters outside the valid UTF-8 range

这没有任何意义。 没有任何内容超出 UTF-8 范围。问题出在其他地方。摆脱这个方法。

The issue is some text can contain characters which can't be processed correctly. The following is eventually rendered on the JSP just fine:

您需要将响应编码设置为 UTF-8 并指示网络浏览器使用 UTF-8。这可以通过将以下行放在 JSP 顶部来完成:

<%@page pageEncoding="UTF-8" %>

另请参阅:

关于java - 无法解码 JavaScript 工具提示中的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3055345/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com