我有几个utf8字符串,需要根据使用的字符找出语言。使用拉丁字母(例如德语,荷兰语和英语)来区分语言并不重要。出现的语言是阿拉伯文,韩文,中文,日文,即具有明确字符集的语言。在大多数情况下,字符串本身就是名称,可以假定第一个字符足以识别。

最佳答案

最简单的方法可以使用icu4j库和方法UScript.getScript(int)

它按字符检测脚本。对于标点和空格,它返回UScript.COMMON。对于拉丁文,它返回UScript.LATIN。对于中文和日文汉字,它返回UScript.HAN。对于日语假名,它返回UScript.KATAKANAUScript.HIRAGANA(因此,一个HAN不能证明文本是中文而不是日语)。

建议您遍历字符串的代码点,但是在大多数情况下,遍历char就足够了。

这里还有一些理论:https://en.wikipedia.org/wiki/Script_%28Unicode%29

下表是为所有字符定义的脚本:http://www.unicode.org/Public/UNIDATA/Scripts.txt

09-10 00:28