【问题标题】:Compile time error while adding unicode \u0022添加 unicode 时出现编译时错误 \u0022
【发布时间】:2015-01-14 02:24:54
【问题描述】:

我正在尝试使用 unicode 在字符串中添加双引号,但是这样做时会出现编译时错误。

String unicCode = "\u0022"; //This line gives a compile time error.

编译错误是我得到的是

字符串文字没有被双引号正确关闭。

有人能帮我理解附加双引号 (") 的 unicode 所需的转义字符是什么吗?

【问题讨论】:

  • 你希望你的字符串包含什么?单个字符"?
  • 你为什么不把它定义为char呢?
  • @SotiriosDelimanolis 我基本上是在尝试准备一个用于调用 Web 服务的字符串。我的要求是添加 "abc" (包括双引号)作为我的肥皂请求的一部分。我已经通过 '\"abc\"' 进行了尝试,但是当请求发送时,它被转换为 '"abc"'
  • @almasshaikh :我尝试将其包含为字符,但再次(如上所述)字符被转换为“。基本上,当我添加除 \u0022 之外的 unicode 时,该字符会准确传递。因此尝试了unicode方式。
  • @user3701861 我编辑了答案,这就是你要找的。​​span>

标签: java string unicode cxf soap-client


【解决方案1】:
 public static void main(String[] args) {
        String quote = "\u005c\u0022";
        System.out.println(quote);
    }

输出

"

public static void main(String[] args) {
        String quote = "\u005c\u0022" + "abc" + "\u005c\u0022";
        System.out.println(quote);
    }

输出

"abc"

如果您想将两个双引号字符放入字符串文字中,您可以使用正常的转义序列来实现。但是你不能使用 Unicode escapes,因为 Java 没有为字符串文字中的 Unicode 转义提供特殊处理。

String quote = "\"";

// 我们不能用单个 Unicode 转义来表示相同的字符串。

// \u0022 对编译器的意义与“.”完全相同。

//下面的字符串变成""":后面跟着一个空字符串

// 由未终止的字符串,这会产生编译错误。

String quote = "\u0022";

【讨论】:

【解决方案2】:

当 javac 编译器读取 java 源文本时,\uXXXX 转义已经提前解决。它仅与字符串文字和反斜杠在那里转义无关。而\u0022 与 char " 相同。 因此需要在字符串文字中转义:"\\u0022",读作"\""这种方法旨在使用任何 unicode 启用 Java 源的纯 ASCII 表示。但你也可以转义 ASCII:

public \u0063lass Test {
    public static void \u006dain(String[] args) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多