整理Java知识点时,在注释中一次无意的书写,导致编译失败,竟然报“非法的Unicode转义”。本着IT人钻研的精神,促使自己有必要深入了解Unicode编码解码的正确用法。
1、Unicode编码解码
// 把Java中\u格式的unicode编码转成中文
String context = "把Java中\\u格式的unicode编码转成中文";
// 编码(转换为Unicode) org.apache.commons.lang.StringEscapeUtils#escapeJava(String)
String escapeContext = StringEscapeUtils.escapeJava(context);
System.out.println(escapeContext);
// 解码(将Unicode还原为ASCII) org.apache.commons.lang.StringEscapeUtils#unescapeJava(String)
System.out.println(StringEscapeUtils.unescapeJava(escapeContext));

正常编译调试时,竟然报“非法的Unicode转义”,What ?

想起曾在《*.properties》配置文件中做的国际化,用的就是Unicode编码。
2、寻根究源
本着IT人钻研的精神,终于在《JAVA解惑(美)布洛赫.中文版》中找到答案:注释中如果包含了 \u 开头的字符时,其后必须紧跟4个16进程的数字,否则转义无效,编译失败。
原文如下:


最后,如果一定要在 Java注释中使用 \u,请进行转义,即使用 \\u 代替。
在整理Java知识点时遇到一个问题,注释中的非法Unicode转义导致编译失败。通过深入研究发现,Java注释中u后面必须跟随4个16进制数字才有效。文章介绍了如何使用Apache Commons Lang的StringEscapeUtils进行Unicode编码和解码,并提醒开发者在注释中使用\u进行转义以避免问题。
171万+

被折叠的 条评论
为什么被折叠?



