我正在建立一个数据库来做一些语言分析,而日语假名给我带来了一些麻烦。
与到目前为止的其他问题不同,我不知道这本身就是一个编码问题。我已将联合设置为utf8_unicode_ci
,从表面上看,它可以保存和回忆大部分内容。
然而,问题是当我进入相关的假名时,例如キ(ki)和ギ(gi)。出于排序目的,除非它们直接冲突,否则日语不会区分两者。例如:
- ぎ (gi) 在きかい (kikai) 之前
- きる (kiru) 在ぎわく (giwaku) 之前
- き(ki)在ぎ(gi)之前
我认为这种行为是我问题的根源。从外部文件加载我的数据集时,我让它执行 SELECT 调用以验证尚未记录日语的特定读数。如果它已经存在,它将获取 ID,以便将其与词条配对;否则添加一个新条目并在之后配对。
在我把所有东西都放进去之后,我注意到的是,无论出现两个这样的相似读数,遇到的第一个读数都会被记录下来,如果出现,另一个读数会显示为误报。例如:
- キョウ(kyou)首先出现,所以带有ギョウ(gyou)的角色改为与kyou配对
- ズ (zu) 出现在 ス (su) 之前,所以同样更多的字符被错误匹配。
如果需要,我可以通过并手动对其进行排序,但我真正想做的是设置数据库以更严格地区分字符(例如,如果字符有两个不同的 UTF-8 代码点,请处理它们作为不同的字符)。有没有办法得到这种行为?