[英]Get Unicode Encoded Characters (Kannada Lanuguage) from given String
String s1="\u0048\u0065\u006C\u006C\u006F"; // Hello
String s2="\u0CAE\u0CC1\u0C96\u0CAA\u0CC1\u0C9F"; // ಮುಖಪುಟ (Kannada Language)
System.out.println("s1: " + StringEscapeUtils.unescapeJava(s1)); // s1: Hello
System.out.println("s2: " + StringEscapeUtils.unescapeJava(s2)); // s2: ??????
当我打印s1
,得到的结果为Hello
。 当我打印s2
,得到的结果是???????
。
我希望输出为s2
ಮುಖಪುಟ
。 我该如何实现?
ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("\u0048\u0065\u006C\u006C\u006F \u0CAE\u0CC1\u0C96\u0CAA\u0CC1\u0C9F");
String output = os.toString("UTF8");
System.out.println("result: "+output); // Hello ಮುಖಪುಟ
您需要添加类似“ UTF-8”的编码,请尝试以下操作
String s1="\u0048\u0065\u006C\u006C\u006F"; // Hello
String s2="\u0CAE\u0CC1\u0C96\u0CAA\u0CC1\u0C9F"; // ಮುಖಪುಟ (Kannada Language)
System.out.println("s1: " + new String(s1.getBytes("UTF-8"), "UTF-8"));
System.out.println("s2: " + new String(s2.getBytes("UTF-8"), "UTF-8"));
如果您使用的是Eclipse
请查看: https : //decoding.wordpress.com/2010/03/18/eclipse-how-to-change-the-console-output-encoding/
请简单地在控制台上输出如下:
String s1="\u0048\u0065\u006C\u006C\u006F";
String s2="\u0CAE\u0CC1\u0C96\u0CAA\u0CC1\u0C9F";
System.out.println("s1: " + s1); // s1
System.out.println("s2: " + s2); // s2
希望对您有帮助。
问题很可能是System.out
不准备处理Unicode。 它是一种输出流,该流以所谓的默认编码进行编码 。
默认编码通常是(例如,在Windows上)一些专有的8位字符集,这些字符集根本无法处理unicode。
我的提示:为了进行测试,请使用UTF-8编码创建自己的PrintStream或PrintWriter。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.