5

我有一个允许 UTF8 字符的输入框——我可以通过编程检测这些字符是中文、日文还是韩文(可能是某些 Unicode 范围的一部分)?我会根据 MySQL 的全文搜索是否有效(它不适用于 CJK 字符)来更改搜索方法。

谢谢!

4

3 回答 3

10
// is chinese, japanese or korean language
function isCjk($string) {
    return isChinese($string) || isJapanese($string) || isKorean($string);
}

function isChinese($string) {
    return preg_match("/\p{Han}+/u", $string);
}

function isJapanese($string) {
    return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $string);
}

function isKorean($string) {
    return preg_match('/[\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]/u', $string);
}
于 2017-12-11T08:58:58.973 回答
4

CJK 字符仅限于某些Unicode 块。您需要检查字符是否在这些块内,并且还应考虑代理(32 位字符)。

于 2010-04-08T10:12:40.743 回答
1

您想检测一个字符是否是(中文或日文或韩文)字符?或者你想区分汉字和日文?前者很容易;由于汉化,后者在许多情况下是不可能的。

于 2010-04-08T10:00:21.503 回答