我有一个单词列表存储在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='?測試'
最佳答案
最可能的解释是字符集翻译问题;例如,您要存储值的列被定义为 latin1 字符集。
但引起问题的不一定是列的字符集。这是在某处发生的字符集转换。
如果您不了解字符集编码,我建议您查阅所有知识的来源:google。
我强烈推荐此搜索的两个热门搜索:
what every programmer needs to know about character encoding
关于php - 将全角和半角字符存储在数据库的唯一列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28621199/