虽然现代韩语不再使用太多汉字,但有时仍会出现一些。一些日本汉字是纯粹的日本汉字,例如“竜”,但许多汉字与简体中文或繁体中文相同。所以你可能会有些困惑。如果你看到了一些汉字,需要查看整个句子。如果有一些平假名/片假名和汉字混合,很有可能是日语。同样,一堆韩文音节和几个汉字将告诉你这句话是韩语。
然后,如果全是汉字,即中文,你可以看看其中是否有一些简化的字符:kZVariant表示一个简体中文字符。哦,而kSpecializedSemanticVariant经常用于特定的日语简化字符。内和內可能看起来一样,但前者是日语,后者是繁体中文和韩语(韩语使用繁体中文作为标准)。
我有一些代码可以返回一个代码点的脚本名称。这可能会有所帮助。你可以遍历一句话,然后看最后剩下了什么。我会把代码放在某个地方。
编辑:代码
http://pastebin.com/e276zn6y
针对下面的评论:
上述功能是基于Unicode.org提供的数据构建的......虽然我并不是一个专家,但我对Unihan数据库做出了很大的贡献 - 我碰巧会说CJK。是的,全部三种语言。我有一些利用Unihan数据库中的kXXX
属性的代码,但A /我不知道我们应该为OP编写代码,B /它需要一种可能超出OP准备实施的物流。我的建议仍然有效。使用上述功能,循环遍历整个句子。如果所有代码点都是“Han”(或“Han” +“Latin”),那么它很可能是中文。另一方面,如果结果是“Han” +“Hangul”(+“latin”可能),则您可以肯定是韩国语。同样,混合使用“Han”和“Katakana” /“Hiragana”,您就有日语。
快速测试
一些代码可与我之前链接的函数一起使用。
function guessLanguage(x) {
var results={};
var s='';
var i,j=x.length;
for(i=0;i<j;i++) {
s=scriptName(x.substr(i,1));
if(results.hasOwnProperty(s)) {
results[s]+=1;
} else {
results[s]=1;
}
}
console.log(results);
mostCount=0;
mostName='';
for(x in results) {
if (results.hasOwnProperty(x)) {
if(results[x]>mostCount) {
mostCount=results[x];
mostName=x;
}
}
}
return mostName;
}
一些测试:
r=guessLanguage("外人だけど、日本語をペラペラしゃべるよ!");
Object
Common: 2
Han: 5
Hiragana: 9
Katakana: 4
__proto__: Object
"Hiragana"
对象包含每个脚本的出现次数。平假名最频繁,平假名+片假名占句子的2/3。
r=guessLanguage("我唔知道,佢講乜話.")
Object
Common: 2
Han: 8
__proto__: Object
"Han"
一个明显的中文案例(在这种情况下是广东话)。
r=guessLanguage("中國이 韓國보다 훨씬 크지만, 꼭 아름다운 나라가 아니다...");
Object
Common: 11
Han: 4
Hangul: 19
__proto__: Object
"Hangul"
一些汉字和大量的韩文字符。毫无疑问是一个韩文句子。
\language[cn]{*}
。 - Village