从给定的字符串中获取 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 ಮುಖಪುಟ
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 ಮುಖಪುಟ