如何使用Java打印包含Unicode字符的瑞典语词汇
Java打印含Unicode的瑞典语单词实现方案
首先需要注意:你示例中给出的\u228是不完整的Java Unicode转义,标准Java Unicode转义格式为\u加4位十六进制数,瑞典语字母å对应的正确转义为\u00e5,调整后转义文本为\u00e5sk\u00e5da,对应输出结果就是åskåda,具体实现方法如下:
方案1:代码中直接写Unicode转义字面量
Java会自动解析代码中写死的Unicode转义序列,直接输出即可:
public class PrintSwedishTest { public static void main(String[] args) { String content = "\u00e5sk\u00e5da"; System.out.println(content); } }
运行注意事项:
- 编译时指定源码编码为UTF-8:
javac -encoding UTF-8 PrintSwedishTest.java - 运行时指定文件编码为UTF-8:
java -Dfile.encoding=UTF-8 PrintSwedishTest
方案2:动态解析外部传入的带Unicode转义的字符串
如果字符串是从文件、接口等外部渠道读取的(此时字符串中的\u会被转义为普通字符,形如"\\u00e5sk\\u00e5da"),需要手动解析转义:
方法1:借助常用工具包(推荐)
用Apache Commons Lang的工具类直接解析:
import org.apache.commons.lang3.StringEscapeUtils; public class PrintSwedishTest { public static void main(String[] args) { // 模拟外部读取到的原生转义字符串 String rawContent = "\\u00e5sk\\u00e5da"; String decodedContent = StringEscapeUtils.unescapeJava(rawContent); System.out.println(decodedContent); } }
方法2:JDK原生实现(无需引入第三方包)
自定义解析方法实现:
public class PrintSwedishTest { public static void main(String[] args) { String rawContent = "\\u00e5sk\\u00e5da"; String decodedContent = unescapeUnicode(rawContent); System.out.println(decodedContent); } private static String unescapeUnicode(String rawStr) { StringBuilder sb = new StringBuilder(); int len = rawStr.length(); for (int i = 0; i < len; i++) { char c = rawStr.charAt(i); if (c == '\\' && i + 5 < len && rawStr.charAt(i+1) == 'u') { // 提取\u后面的4位十六进制编码 String hexCode = rawStr.substring(i+2, i+6); sb.append((char) Integer.parseInt(hexCode, 16)); i += 5; continue; } sb.append(c); } return sb.toString(); } }
以上所有方案运行后均可输出预期结果åskåda。
内容的提问来源于stack exchange,提问作者kanishka malpana
相关产品推荐
相关产品推荐

