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特殊字符。
您从命令行传递的参数实际上不是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
的评论中提供)