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

Nic*_*ick -1 php unicode

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

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

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

我正在使用PHP.

更新:

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

dec*_*eze 5

我们首先澄清一些术语:

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

现在:

  • 日本部分与中国人共享其书写系统; 除了一些日语字符(平假名,片假名)之外,日语还使用汉字(汉字).拉丁字母也用于日语.
  • 中国字符也部分地在韩国写入时使用,但韩国可以在专门写韩文.
  • 这些语言中的任何一种都可以以各种方式编码 ; 有些编码主要用于中文韩文日文,但最广泛使用的Unicode编码(例如UTF-8)可以用相同的编码表达所有这些语言,并且不偏向于任何一种特定语言.

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

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

我能提出的唯一建议就是回到绘图板上,弄清楚你究竟想做什么.