如何确定角色是中文,韩文还是日文

时间:2017-09-25 11:11:27

标签: php unicode

我有来自数据库的字符串。每个字符串都是英文(ASCII)或中文,韩文或日文。

我需要检测并删除所有中文字符串,
必须保留所有英语,韩语和日语字符串。

这可能吗?我知道日文文本可能会使用中文符号。

我正在使用PHP。

更新

我不会尝试检测语言。检测编码就足够了。但我不确定中文和日文之间的区别 - 他们使用相同的编码或不同的编码。

1 个答案:

答案 0 :(得分:5)

让我们首先澄清一些术语:

语言是一种人类语言,如英语,中文,韩语或日语。语言是使用由字符/表意文字/字母组成的书写系统编写的。几种语言共享书写系统;您可以使用拉丁字母来编写一大堆不同的语言,如英语,法语,德语等。这些书写系统使用编码在计算机中进行编码,这样就可以使用拉丁字母表达单个字符。只有二​​进制表示法(1和0)。

现在:

  • 日本人与中国人分享其写作系统;除了一些日语字符(kanji)之外,日语还使用中文字符(hiragana, katakana)。拉丁字母也用于日语。
  • 汉字也是partially used in Korean writing,但韩文只能用hangul编写。
  • 这些语言中的任何一种都可以通过各种方式编码;有些编码主要用于ChineseKoreanJapanese,但最广泛使用的Unicode编码(例如UTF-8)可以用相同的编码表达所有这些语言并且不偏向任何一种特定的语言。

鉴于这一切,你想要的是介于不清楚和不可能之间。你可以删除文本中的所有中文字符(删除中文中使用的任何字符),但是对于日语而言也意味着大部分删除日文文本(对于韩文而言则较少,但相同问题)。这就像从英文文本中删除拉丁字母;如果你这样做,那就没有多少了。您可以尝试检测某些文本是否以某种主要偏向某种特定语言的编码进行编码,但如果您的文本采用Unicode编码进行编码,则无法区分。您可以尝试使用语言分析来检测文本中使用的语言,但您声明您不想检测“语言”。

可以尝试检测某些特定韩语(hangul)或日语(假名)字符是否在字符串中,这很好地表明该文本可能是其中一种语言。但是,在日语的情况下,你会得到假阴性,因为短语完全可以包含中文字符并且仍然是有效的日语。

我能提出的唯一建议是回到绘图板,找出你想要做什么。