【发布时间】:2015-07-04 02:46:45
【问题描述】:
这似乎是在 HTML 中显示特殊字符的永恒问题。
我在 mysql 和 PHP 中使用 PDO,mysql 中的排序规则是 utf8_unicode_ci 。
这是保存在数据库中的这句话和名字。
"I can't go to school
当我进行选择查询并在我的 HTML 文件中回显它时,它看起来像这样
“I can't go to school
我设置了$PDO->exec("set names utf8");,这应该使得收到的响应应该处理特殊字符。
此外,当我通过浏览器查看视图源时,我的 HTML 在顶部有这个
<meta content="charset=utf-8">
我想可能有两个原因,要么数据没有正确提取,要么数据被正确提取但在 View 中没有正确显示,
我该如何解决/调试它?
【问题讨论】:
-
你试过
new PDO("mysql:host=localhost;dbname=DB;charset=UTF8");吗? -
@DavidDomain 这可能做同样的事情,$PDO->exec("set names utf8");,但让我也试试你提到的那个。
-
您使用的是哪个 PHP 版本?要在构造函数中使用
charset=UTF8,您需要运行 v.5.3.6 或更高版本。在 PHP 5.3.6 之前,您必须像以前一样手动操作。 -
@DavidDomain 还是一样
-
我能想到的最后一个选项是
mysql的驱动程序特定选项。给你new PDO( 'mysql:host=mysql.example.com;dbname=example_db', "username", "password", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));,希望这能解决问题。