MySQL db中的文本是ISO-8859-1(拉丁文)编码但应该是UTF-8

时间:2012-01-31 23:32:58

标签: php mysql html encoding utf-8

我有一个充满拉丁编码文本的mysql表。我知道这是因为即使我将表定义为UTF-8编码,并且发送的标题设置为UTF-8,我在黑色菱形中收到丑陋的问号。我可以正确显示数据的唯一方法是将标题更改为使用ISO-8859-1编码。

我已经尝试过我可以在SO和整个网络上找到的所有建议,但到目前为止都没有。

我试图按照作者的建议做到:https://stackoverflow.com/a/5232411/102067,但即使我能够使用文本阅读器正确读取文件,它也无法在网站上正确显示。

我完全失去了对如何解决这个问题的建议。

谢谢。

1 个答案:

答案 0 :(得分:1)

我终于找到了答案,感谢@ deceze的suggestion

对于遇到同样问题的人来说,这就是我所做的......

我正在使用PDO连接到我的数据库,如果不指定,我不知道默认连接编码是拉丁语。因此,我必须指定我想要使用UTF-8编码的连接。

使用此附加参数,我的连接现在看起来像:

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