【问题标题】:Unicode string in Java (Android) not workingJava(Android)中的Unicode字符串不起作用
【发布时间】:2015-12-26 16:15:13
【问题描述】:

我正在制作下一条记录,以便将输入的字符与此数组进行比较:

 String[] GSM_7_BIT_EXT = {"\u000c", "\u005e", "\u007b", "\u007d", "\u005c", "\u005b", "\u007e", "\u005d", "\u007c", "\u20ac"};


编译后(Android Studio)出现很多错误,例如:
- '}' 预期
- 非法字符:\35
- 预期
和许多其他人。

我做错了什么?

【问题讨论】:

    标签: java android unicode


    【解决方案1】:

    罪魁祸首是\u005c:这是反斜杠字符,因此"\u005c" 等于"\",这不是一个有效的字符串文字。 (通过从数组定义中删除 "\u005c" 进行测试)。

    你可以改写"\\"

    【讨论】:

    • 非常感谢!这行得通。请您分享此类无效字符串文字的列表吗?在谷歌中找不到它。
    • @GoltsevEugene:反斜杠开始转义序列,请参阅stackoverflow.com/a/1367339/3215527,因此要编写带有反斜杠字符的字符串文字,您需要将其写为\\。
    • 实际情况是,与所有其他转义序列不同,\u 并非特定于字符串或字符。它可以出现在 String 和 char 文字之外,并且在其他任何内容之前被解析。例如,您可以编写 \u0053\u0074\u0072\u0069\u006e\u0067[] 而不是 String[],它会编译得很好。这就是为什么"\u005c" 相当于在代码中写"\",这是不合法的语法。
    • 谢谢,我明白了。但是 String 中还有哪些其他符号是非法的?
    • @GoltsevEugene \ 和 " 不能简单地放在字符串中,而是需要转义。
    猜你喜欢
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多