0

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

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

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

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

4

1 回答 1

0

事实证明,尽管在页面和表格以及表格的列上设置了字符编码,但与表格的连接默认为 ISO Latin 1。在我的查询中添加 'SET NAMES utf8' 解决了这个问题,即

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

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

于 2012-08-16T19:42:02.070 回答