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
。我怎样才能做到这一点?
答案 0 :(得分:1)
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 ಮುಖಪುಟ
答案 1 :(得分:0)
你需要添加像“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"));
答案 2 :(得分:0)
如果您使用的是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
希望,这对你有帮助。
答案 3 :(得分:0)
问题很可能是System.out
没有准备好处理Unicode。它是一个输出流,以所谓的默认编码进行编码。
默认编码最常见(即在Windows上)一些专有的8位字符集,它根本无法处理unicode。
我的提示:为了测试,请使用UTF-8编码创建自己的PrintStream或PrintWriter。