从给定的字符串中获取 Unicode 编码的字符(卡纳达语)

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 的输出为 ಮುಖಪುಟ。我怎样才能做到这一点?

你需要添加像"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。

 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 ಮುಖಪುಟ