我有一个包含不同语言数据的数据库。有些语言使用重音(比如áéíóú),我需要在这个数据中搜索,因为口音不存在(搜索'campeon‘应该返回'campeón’作为一个值结果)。
问题是我的数据库(utf8_unicode_ci)中的表没有存储utf8字符。如果您通过phpmyadmin看到数据,带有口音的单词如下所示:campe
经过一些研究,我发现(在StackOverflow question中)这个问题与集合名称字符集的不存在有关。事实上,我已经做了一些测试,如果我将名称设置为utf8,一切都按预期进行。
好吧,我有解决办法,有什么问题?问题是数据库正在生产,所以数据库中有数千个字符串。如果我更改客户端将使用的字符集,所有已经存在的字符串都将无效。问题是:有没有办法:
在使用错误字符集(如mine?
。
如果有人在我提出的解决方案中有经验,或者有新的解决方案,我将非常感谢分享。
发布于 2012-03-14 09:58:37
问题是数据是使用错误的连接编码插入的,您可以通过
这将解决编码问题,之后搜索将按预期工作。
发布于 2012-03-14 09:58:30
如果在会话开始时创建表的副本,更改副本的字符集,执行所有查询,然后在会话结束时删除表,怎么办?我不知道这会有多实际-取决于您需要多久执行这些查询,以及表的大小。
https://stackoverflow.com/questions/9699473
复制相似问题