好。我搜索了所有可能的方法。但是这个仍然让我退缩。
我正在使用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'"
现在工作正常。
答案 0 :(得分:1)
黑钻是浏览器问题。数据库使用简单的问号 看来你从databalse得到了错误的数据。但是如果你的设置不正确,那就非常棘手了。你需要检查一切
查看页面从浏览器菜单中选择不同的字符集也很有用。
但首先你必须擦除你尝试的所有随机动作的痕迹,所有这些不同的编码,解码和东西。只是简单而直接的数据库输出。否则你永远不会遇到问题