【发布时间】:2013-05-02 11:23:55
【问题描述】:
我用 utf8_unicode_ci 排序规则设置了一个 MySQL 数据库,它上面的所有表和列都有相同的排序规则。
我的 Doctrine 配置将 SET NAMES utf8 作为连接选项,而我的 html 文件使用 utf8 字符集。
保存在这些表格中的文本包含重音字符(á、è 等)。
问题是当我将内容保存到数据库时,它会保存奇怪的字符,就像我尝试将 ISO 保存在 UTF8 表中一样。 (例如:Notícias)
我发现的唯一解决方法是,在保存之前使用 utf8_decode,在打印之前使用 utf8_encode。
这意味着,由于某种原因,介于两者之间的东西正在将 utf8 与 iso 混淆。
可能是什么?
谢谢。
编辑:
我已经设置在保存之前进行编码,在打印之前进行解码,它可以正确打印,但在 DB 中我的字符变为:
XPTÓ -> XPTÓ“
这使得在 DB 中搜索“XPTÓ”变得不可能......
【问题讨论】:
-
排序规则无关紧要,它只是告诉 MySQL 如何对字符串进行排序。您要确保 charset 编码设置为 utf8。你能更新你的答案以反映你有正确的编码吗?
-
@EzequielMuns 已更新
标签: mysql utf-8 doctrine-orm zend-framework2