我给出了以下值(使用 Windows-1252 转义)
ABC ; â、ê、î、ô、û (我需要添加空格来显示精确值,实际数字和之间没有空格;)
但实际值是,我想要与下面相同的值
ABC ‘ ’ “” â, ê, î, ô, û
我尝试过 HtmlUtils.htmlUnescape(decodedString);但没有用 我得到的输出像 ABC â、ê、î、ô、û
“”“”被删除。
您能提供如何在java中执行此操作吗?
最佳答案
引号字符可能仍在字符串中,只是显示时不可见。这是因为在 Unicode 或 ISO 8859-1 中,代码点 145 未分配给可见字符。
最好的解决方案(如果可能)是将编码传递给 unescapeHtml
方法。
另一种方法是首先调用 htmlUnescape
,然后使用以下代码将 cp1252 代码点映射到相应的 Unicode 代码点:
String unescapeHtmlCp1252(String input) {
String nohtml = HtmlUtils.htmlUnescape(input);
byte[] bytes = nohtml.getBytes(StandardCharsets.ISO_8859_1);
String result = new String(bytes, Charset.forName("cp1252"));
return result;
}
当您使用调试器单步执行此代码并检查 nohtml
字符串时,您可能会看到值为 145、146 等的字符。这意味着此时角色仍然存在。
随后,当使用字体将字符转换为像素时,这些字符没有定义,因此会被忽略。但直到这一步,它们仍然存在。
关于java - un 使用java转义特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44213368/