当前位置: 首页 > 知识库问答 >
问题:

JDK 1.8 on unicode转义字符给出的字符串文字没有通过双引号错误[duplicate]正确关闭

狄信然
2023-03-14

我围绕这个问题做了一些研究,但似乎找不到确切的问题的答案

我正面临一个奇怪的编译时问题,即包含unicode转义代码的Java字符串文字。

下面是正在考虑的代码片段:

    String text = textArea.getText().trim();
    String unicodeReturn = "\u000A";
    text = 
            "\"" + 
            text
            .replace(" ", "%s")
            .replace("\\", "\\\\")
            .replace("\"", "\\\"")
            .replace("\n", "\u000A") 
            + 
            "\"";
    String unicodeReturn = "\u000A";
    .replace("\n", "\u000A") 

如果存在相同的unicode文字,似乎不会引起任何问题。我使用unicode符号语法已经有一段时间了。如果我的记忆力不差,格式是\uxxxx,其中X是十六进制数字。

我的环境是

  • JDK 1.8.0_66
  • Macosx El Capitan
  • 月食火星1
  1. 有人遇到过同样的问题吗?
  2. 这是已知的JDK 1.8编译器bug吗?
  3. 是否有解决方案或变通方法?
  4. 有人知道我是否做错了什么吗?

(它相当令人沮丧,阻碍了我编译我的代码)

共有1个答案

岳玉书
2023-03-14

\u Unicode在解析文本之前进行转换,因此

String unicodeReturn = "\u000A";

String unicodeReturn = "
";

下面是一个完全由\u代码https://stackoverflow.com/a/30727799/57695组成的Hello World程序的示例

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d
.replace("\n", "\\u000A")
.replace("\n", "\\n")
 类似资料:
  • 我在第16行中遇到了一个错误(从“

  • 问题内容: 我的字符串中有双引号,因为我会这样做: 我将如何用Java做到这一点? 问题答案: 否。此类功能在Java中不可用。 从Sun 文档: 当在打印语句中遇到转义序列时,编译器将对其进行相应的解释。例如,如果要将引号放在引号内,则必须在内部引号上使用转义序列\“。要打印句子 你会写

  • 我在解析antlr4中的格式行列表时遇到了一个问题 但这是失败的第一个字符识别'*'本身,这使我困惑。 第1行:0不匹配的输入'*这是一个字符串',应为'*'

  • 问题内容: 如何获得以下两个文本中引号之间的含义? 我的问题是,如果引号被转义,则应将其忽略,但是有可能使反斜杠转义。 我想获得以下团体。 问题答案: 匹配带引号的字符串,包括其中出现的所有转义字符。 说明:

  • 问题内容: 如何在浏览器中显示的JavaScript字符串中包含双引号? 我正在做JavaScript作业,我必须在列表中间加上双引号,如下所示: 问题答案: 使用单引号。 或转义双引号。