php - 黑钻石问号问题

时间:2013-04-09 20:08:51

标签: php mysql encoding utf-8 pdo

好。我搜索了所有可能的方法。但是这个仍然让我退缩。

我正在使用PDO从MySQL获取数据。 MySQL数据的字符类似于ä。我只是使用PDO运行查询并json_encode生成结果数组。编码后,我strip_tag s。

当我打印数组时,我仍然看到黑色钻石问号字符。 。 var_dump显示相同的钻石标记。

我的PDO具有以下设置:

   PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"

在JSON响应中,对于具有此字符的字符串,我得到null

我试过了utf8_encode。它没有解决问题。 utf8_encode(json_encode($results))

我试过了iconv("UTF-8", "ISO-8859-1", strip_tags(json_encode($results)))。没有运气。

数据库显示正确的字符ä

我现在完全没有想法。

更新

这解决了我的问题。

改为:

  PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"

  PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'"

现在工作正常。

1 个答案:

答案 0 :(得分:1)

黑钻是浏览器问题。数据库使用简单的问号 看来你从databalse得到了错误的数据。但是如果你的设置不正确,那就非常棘手了。你需要检查一切

  1. 如果您的桌子标有utf8 charset
  2. 如果您的数据确实以utf编码(未标记但确实编码)
  3. 如果您的服务器在Content-type标头中发送正确的字符集。
  4. 查看页面从浏览器菜单中选择不同的字符集也很有用。

    但首先你必须擦除你尝试的所有随机动作的痕迹,所有这些不同的编码,解码和东西。只是简单而直接的数据库输出。否则你永远不会遇到问题