Java字符串Unicode值

如何在java中获取字符串的unicode值?

例如,如果字符串是“Hi”,我需要像\ uXXXX \ uXXXX这样的东西

一些unicode字符跨越两个Java字符。 引自http://docs.oracle.com/javase/tutorial/i18n/text/unicode.html :

值超出16位范围且在0x10000到0x10FFFF范围内的字符称为补充字符,并定义为一对char值。

正确的方法来逃避非ascii:

 private static String escapeNonAscii(String str) { StringBuilder retStr = new StringBuilder(); for(int i=0; i 1) { i += charCount - 1; // 2. if (i >= str.length()) { throw new IllegalArgumentException("truncated unexpectedly"); } } if (cp < 128) { retStr.appendCodePoint(cp); } else { retStr.append(String.format("\\u%x", cp)); } } return retStr.toString(); } 

此方法将任意String转换为ASCII安全表示forms,以便在Java源代码(或属性文件)中使用:

 public String escapeUnicode(String input) { StringBuilder b = new StringBuilder(input.length()); Formatter f = new Formatter(b); for (char c : input.toCharArray()) { if (c < 128) { b.append(c); } else { f.format("\\u%04x", (int) c); } } return b.toString(); }