让MySQL在SELECT调用中正确区分日语字符

时间:2013-09-04 16:16:07

标签: mysql unicode utf-8

我正在建立一个数据库来做一些语言分析,日本假名给我带来了一点麻烦。

与目前为止的其他问题不同,我不知道这本身就是一个编码问题。我已经将合并设置为utf8_unicode_ci,从表面上看,它可以保存并回忆大部分事情。

然而,问题是当我进入相关的假名时,例如キ(ki)和ギ(gi)。出于分类目的,日本人不区分这两者,除非它们发生直接冲突。例如:

  • ぎ(gi)来自きかい(kikai)
  • きる(kiru)来到ぎわく(giwaku)
  • き(ki)来自ぎ(gi)

我认为这种行为是我问题的根源。从外部文件加载我的数据集时,我让它进行SELECT调用以验证是否尚未记录日语中的特定读数。如果它已经存在,它将获取ID,以便它可以与标题配对;否则会添加一个新条目并在此后配对。

我把所有东西放进去后注意到的是,无论发生两个这样类似的读数,遇到的第一个都会被记录下来,如果它出现的话会出现另一个误报。例如:

  • キョウ(kyou)首先出现,所以ギョウ(gyou)的角色与kyou配对
  • ズ(zu)出现在ス(su)之前,所以更多的角色也被错误地匹配。

如果需要,我可以通过并手动对其进行排序,但我真正想做的是设置数据库以更加严格地区分字符(例如,如果字符有两个不同的UTF-8代码积分,将它们视为不同的角色)。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以使用utf8_bin获取通过Unicode代码点比较字符的排序规则。

utf8_general_ci整理也区分了キョウ和ギョウ。

答案 1 :(得分:1)

保存到数据库时 将其保存为二进制 当回电时将其改为日语 阿拉伯语与我同样的问题