0

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

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

当我打印数组时,我仍然看到黑色菱形问号字符。�. 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'"

它现在工作正常。

4

1 回答 1

1

黑钻是浏览器问题。数据库使用简单的问号。
看来您已经从数据库中获取了错误的数据。但是,设置不正确的 utf 是非常棘手的。你需要检查一切

  1. 如果您的表格标有 utf8 字符集
  2. 如果您的数据确实以 utf 编码(未标记但确实编码)
  3. 如果您的服务器在 Content-type 标头中发送正确的字符集。

查看从浏览器菜单中选择不同字符集的页面也很有用。

但首先你必须擦除你尝试过的所有随机动作的任何痕迹,所有这些不同的编码、解码和东西。只是从数据库中直接输出。否则你永远不会解决问题

于 2013-04-09T20:25:23.183 回答