MySQL的字符编码问题 - 排序规则设置为UTF-8,但文本存储为ISO Latin 1

时间:2012-08-14 14:19:30

标签: mysql utf-8 character-encoding latin1

我有一个表,其排序规则设置为ut8_general_ci。表中的列也设置为此编码。

出于某种原因,当我在MySQL中查看我的表时,表中的文本被呈现/存储为ISO Latin 1,如果我不想编辑表中任何条目中的任何文本我必须使用ISO Latin 1编码来确保文本在页面上正确呈现(页面用户UTF8)。

手动输入ISO拉丁文1文本通常可以正常工作,但是对于几个条目它不起作用,即字符在我的页面上无法正确呈现(当我使用UTF8时它们也无法正确呈现)。因此这个问题。如果我能弄清楚MySQL如何处理字符编码,我可能会解决这个问题。

所以,问题是有人可以解释MySQL如何处理编码,特别是当排序规则设置为UTF-8时,我在表中看到ISO Latin 1字符的原因。

1 个答案:

答案 0 :(得分:0)

事实证明,尽管在页面上以及表格和表格列上设置了字符编码,但与表格的连接默认为ISO Latin 1.在我的查询中添加“SET NAMES utf8”修复了此问题,即

$pdo = new PDO('mysql:dbname=****;host=localhost', '****', '****',
                array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

文章deceze链接到非常有帮助。谢谢!