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

标签 java unicode special-characters

 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 字符,而是用 \ 转义的 unicode 字符的 String 。最终,您的字符串将变为 \\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 字符串转换为 unicode 字符的其他方法。(已在 Marcinek 的评论中提供)

关于java - 当作为参数传递时,在 Java 中正确表示 ^A (Unicode\u0001),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34470445/

相关文章:

java - 我怎样才能用红绿灯显示随机灯?

mysql - 为什么数据库将字符存储为???当它们在 API 响应中正确呈现时?

c - printf 的打印效果与 fprintf 不同

Python UnicodeEncodeError/维基百科API

unicode - 将 Unicode 字符打印到 PowerShell 提示符

google-chrome - 'c̷̙̲̝ͭ̏ͥͮ͟ ͖' character in Zalgo in Chrome' s 谷歌历史

java - 在 Javadoc 中使用 < 和 > 字符

java - 从列表中获取最长的连续记录

java - 多个线程获取 x 变量的值,但同时只有一个线程可以更改 x 变量的值

java - 覆盖 JComboBox 默认颜色