思路
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
本文探讨了Java和Python中如何检测Unicode编码的汉字。Java的char类型能表示65536个字符,足以涵盖大部分地球上的文字,而汉字主要集中在Unicode的[0x4e00,0x9fa5]区间。提供的Java代码示例展示了如何检查字符串是否包含中文字符,但无法检测中文标点。相比之下,Python提供了简单的方法来判断字符串是否全为中文字符(不考虑标点)。
7234

被折叠的 条评论
为什么被折叠?



