整理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 代替。