java - un 使用java转义特殊字符

标签 java

我给出了以下值(使用 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/

相关文章:

java - 开发多线程Javafx应用需要注意什么?

java - Android ListView 与详细信息页空对象

静态变量的Java赋值++

java - 在 Web 应用程序中记录用户 Activity

java - 如何在 Java 中以类似的方法转换 php unpack()

java - 执行 com.android.build.gradle.internal.tasks.FinalizeBundleTask$BundleToolRunnable 时发生故障

java - Appium 版本 >= 1.5.0 中名称定位器策略的替换

java - 如何一次删除多个gridview项目

java - 我应该把 JUnit 测试放在哪里?

java - 我尝试过使用 long 作为变量类型以及函数的返回类型,但它仍然溢出。我不明白为什么?