Unicode编码看百度也很少所以自己整理下来。
项目需要,将一段字符串里面含有中文,英文,中英文标点符号。其中 中文,中标点符号使用Unicode编码。
类似这种
String code="下雨了!;。wxn;,.";
只需要两个方法,
// 根据UnicodeBlock方法判断中文标点符号
public static boolean isChinesePunctuation(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_FORMS
|| ub == Character.UnicodeBlock.VERTICAL_FORMS) {
return true;
} else {
return false;
}
}
/**
* 字符串转换unicode
*/
public static String string2Unicode(String codeResult) {
Pattern p = Pattern.compile("[0-9]*");
Matcher m = p.matcher(codeResult);
StringBuffer unicode = new StringBuffer();
for (int i = 0; i < codeResult.length(); i++) {
// 取出每一个字符
char c = codeResult.charAt(i);
p = Pattern.compile("[\u4e00-\u9fa5]");
m = p.matcher(String.valueOf(c));
//判断是否为 中文
if (m.matches()) {
// 将汉字转换为unicode
unicode.append("\\u" + Integer.toHexString(c));
//判断是否为中文标点符号
} else if (isChinesePunctuation(c)) {
// 将中文标点符号转换为unicode
unicode.append("\\u" + Integer.toHexString(c));
} else {
unicode.append(c);
}
}
return unicode.toString();
}