[英]Java String Unicode Value
如何在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<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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.