我已经设置了一个带有utf8_unicode_ci排序规则的MySQL数据库,并且其上的所有表和列都具有相同的排序规则。
我的Doctrine配置将SET NAMES utf8作为连接选项,我的html文件使用utf8 charset。
这些表格中保存的文字包含重音字符(á,è等)。
问题在于,当我将内容保存到数据库时,它会保存奇怪的字符,就像我尝试在UTF8表中保存ISO一样。 (例如:Notçcias)
我发现的唯一解决方法是在保存前输出utf8_decode,在打印前输入utf8_encode。
这意味着,出于某种原因,介于两者之间的东西正在混乱utf8与iso。
可能是什么?
感谢。
修改
我在打印之前设置了保存和解码之前的编码,并且打印正确但在DB中我的字符更改为:
XPTÓ - > XPTÓ
这使得在DB中搜索“XPTÓ”是不可能的......
答案 0 :(得分:0)
我会print bin2hex($string);
在原始工作流程的每一步(即没有编码/解码步骤)。
通过以下各项:
$_POST
数据$em->getConnection()
)$em->detach($entity); $entity = $em->find('Entity', $id);
执行此操作)您正在查看输出更改的位置,并将搜索重点放在那里。
我还要仔细检查:
SHOW CREATE TABLE 'table'
显示整个表的CHARSET=utf8
(并且各列没有任何不同)