php - MySQL 数据库中的文本采用 ISO-8859-1(拉丁文)编码,但应为 UTF-8

标签 php mysql html encoding utf-8

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

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

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

我完全不知所措,愿意接受有关如何解决此问题的建议。

谢谢。

最佳答案

感谢@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'));

关于php - MySQL 数据库中的文本采用 ISO-8859-1(拉丁文)编码,但应为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088666/

相关文章:

javascript - 使用浏览器调整大小调整、移动和缩放图像和文本 div

javascript - 如何将 if 语句与 v-for 一起使用?

php - 最后一点后的正则表达式提取字符串

PHP - 检查数组索引是否存在或为空

php - 如何在 PHP 中将此数组转换为 JSON

php - 使用 Javascript/PHP/mySQL 的日历

mysql - 插入 SQL 错误

mysql - 如何选择与 mysql 查询中的最大日期对应的值

java - 是否可以收集语句执行期间创建的行?

python - 如何让 python 3 在运行 http.server 时显示 html 和动态内容