我有一个存储在mysql中的单词列表,大小约为10k字。该列标记为唯一。但是,我无法插入标点符号的全角和半角字符。
以下是一些例子:
(half-width, full-width)
('?', '?')
('/', '/')
目的是,我有很多文章包含全角和半角字符,并想知道文章是否包含这些文字。我使用php进行比较,它可以知道'?'与'?'不同。有没有想过如何在mysql中做到这一点?或者是否有一些方法可以使PHP相同?
我使用utf8_unicode_ci进行数据库编码,该列也使用utf8_unicode_ci进行编码。当我进行这些查询时,两者都返回相同的记录,'?测试'
SELECT word FROM word_list WHERE word='?測試'
SELECT word FROM word_list WHERE word='?測試'
答案 0 :(得分:2)
最有可能的解释是角色翻译问题;例如,您将值存储到的列定义为latin1 characterset。
但它不一定是导致问题的专栏的字符集。这是在某处发生的角色转换。
如果您不了解字符编码,我建议您咨询所有知识来源:google。
我强烈推荐这次搜索的两个热门点击:
what every programmer needs to know about character encoding