作为参数传递时,在Java中正确表示^ A(Unicode \ u0001)

问题描述 投票:2回答:1
 public class TestU {
    public static void main(String[] args) {
        String str = "\u0001";
        System.out.println("str-->"+str);
        System.out.println("arg[0]-->"+args[0]);
    }
}

输出:

str-->^A
arg[0]-->\u0001

我正在通过arg[0]作为\u0001

我在linux中执行了这段代码,命令行变量不作为unicode特殊字符。

java unicode special-characters
1个回答
2
投票

您从命令行传递的参数实际上不是unicode字符,但它是使用String转义的unicode字符的\。最终,你的字符串将成为\\u0001,这就是它打印\u0001的原因。同样,如果你输入\作为命令行参数,它将成为\\以逃避反向斜杠。

虽然你在main中声明的String实际上是unicode字符。

String escapedstring = "\\u0001";//in args[0]
String unicodeChar = "\u0001";// in str

那么,现在你想要将\\u0001转换成\u0001,并且有很多方法可以实现这一点。即你可以使用StringEscapeUtils#unescapeJava实用程序方法,或者你也可以尝试以下方式。

String str = "\\u0001";
char unicodeChar = (char) Integer.parseInt(str.substring(2));
System.out.println(unicodeChar);

注意:您可以在以下问题中找到将unicode String转换为unicode字符的其他方法。(已在Marcinek的评论中提供)

© www.soinside.com 2019 - 2024. All rights reserved.