添加unicode \ u0022时编译时间错误

时间:2014-11-17 08:14:15

标签: java string unicode cxf soap-client

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

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

编译错误是我得到的

  

双引号未正确关闭字符串文字。

有人可以帮助我理解用于附加双引号(“)的unicode所需的转义字符。

2 个答案:

答案 0 :(得分:7)

 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与编译器具有完全相同的含义&#34;。

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

//由未终止的字符串生成编译错误。

String quote = "\u0022";

答案 1 :(得分:2)

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

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