思路
Java用的是Unicode 编码char 型变量的范围是0-65535 无符号的值,可以表示 65536个字符,基本上地球上的字符可被全部包括了
汉字基本集中在[19968,40869]之间,共有20901个汉字
unicode编码范围: 汉字:[0x4e00,0x9fa5](或十进制[19968,40869]) 数字:[0x30,0x39](或十进制[48, 57]) 小写字母:[0x61,0x7a](或十进制[97, 122]) 大写字母:[0x41,0x5a](或十进制[65, 90]) /x3130-/x318F (韩文 /xAC00-/xD7A3 (韩文) /u0800-/u4e00 (日文)
public static boolean isContainChinese(String str) throws EmptyException {
if (StringUtils.isEmpty(str)) {
throw new EmptyException("sms context is empty!");
}
Pattern p = Pattern.compile("[\u4E00-\u9FA5|\\!|\\,|\\。|\\(|\\)|\\《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]");
Matcher m = p.matcher(str);
return m.find();
}
注:Pattern.compile("[\u4e00-\u9fa5]")只能检测出中文汉字不能检测中文标点
Python判断字符串是否是中文(utf-8编码)
不考虑中文标点的情况
for ch in str:
if u'\u4e00' <= ch <= u'\u9fff':
language = "zh_CN"
break