从给定的String获取Unicode编码字符(Kannada Lanuguage)

时间:2016-06-01 09:12:07

标签: java spring-mvc unicode unicode-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。我怎样才能做到这一点?

4 个答案:

答案 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。