java - 无法在 Java 字符串中保存 HTML 实体 - 非法字符

标签 java html html-entities

我无法编译这个:

String[][] UMLAUT_REPLACMENTS = {{"\u0022", """},{"\u0021", "!"}};

我尝试使用\\来转义特殊字符,但没有效果。

这是错误代码:

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project opk-application-util: Compilation failure: Compilation failure: 
[ERROR] /C:/eplatform/git-repos/opk-backend/opk-application-util/src/main/java/util/SonderZeichenFilter.java:[50,41] '}' expected
[ERROR] /C:/eplatform/git-repos/opk-backend/opk-application-util/src/main/java/ch/opk/util/SonderZeichenFilter.java:[50,45] ';' expected
[ERROR] /C:/eplatform/git-repos/opk-backend/opk-application-util/src/main/java/ch/opk/util/SonderZeichenFilter.java:[50,46] illegal character: '#'
[ERROR] /C:/eplatform/git-repos/opk-backend/opk-application-util/src/main/java/ch/opk/util/SonderZeichenFilter.java:[50,47] ';' expected
[ERROR] /C:/eplatform/git-repos/opk-backend/opk-application-util/src/main/java/opk/util/SonderZeichenFilter.java:[50,50] unclosed string literal

最佳答案

在 Java 中,Unicode 转义序列 ( \u<i>XXXX</i> ) 作为 pre-processing 的一部分进行处理和字符串文字 escape sequences 之前被处理。因此当编译器处理"\u0022"时它实际上正在处理字符串文字 """这是一个空字符串文字(两个双引号),后跟另一个字符串文字的左引号,因此会导致错误“未闭合的字符串文字”,因为代码中的双引号数量不均匀。

这是导致 Javadoc 格式错误的一个常见原因(当作者想按字面意思编写 \u<i>XXXX</i> 但生成的 HTML 却包含相应的 Unicode 字符),并且大多数 IDE 也会对此感到困惑(例如 \u0063lass MyClass {} 是有效的) Java 源代码;\u0063 = c )。

在您的情况下,您可以使用特殊的转义序列 \"写一个文字 " 。这也将提高可读性,因为并不是每个人都熟悉 Unicode 代码点 " 。同样\u0021可以写成!因为该字符在 Java 字符串中没有特殊含义。因此,您的代码可以这样编写:

String[][] UMLAUT_REPLACEMENTS = {{"\"", "&#34;"},{"!", "&#33;"}};

如果你想要文字 \u<i>XXXX</i>在 Java 字符串中,您必须在反斜杠前面加上另一个 \ 来转义反斜杠。 :"\\u<i>XXXX</i>"

关于java - 无法在 Java 字符串中保存 HTML 实体 - 非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63738972/

相关文章:

java - 使用 Google Cloud Dataflow 从 Outlook 下载附件并将其存储在 Google Cloud Storage 中

java - 将从文本文件读取的字符串解析为整数

java - org.springframework.beans.factory.UnsatisfiedDependencyException : Error creating bean with name 'solrDocumentController'

java - mod产生的水不流动

java - 如何捕获弹出窗口上显示的数据

html - 在c中将html实体转换为unicode(utf-8)字符串?

html - 星标 ★ 在 Chrome 中不显示

javascript - Ruby json gem 正在编码 html 实体

php - HTML mySQL 表单不起作用

HTML 和 CSS 制作具有悬停效果的图像链接?