Javaで文字列のUnicode値を取得するにはどうすればよいですか?
たとえば、文字列が「Hi」の場合、\ uXXXX\uXXXXのようなものが必要です
一部のUnicode文字は2つにまたがっています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<str.length(); i++) {
int cp = Character.codePointAt(str, i);
int charCount = Character.charCount(cp);
if (charCount > 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セーフ表現に変換して、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();
}