2011-12-28 160 views
1

PHP JSON输出我使用这个PHP脚本特殊字符

​​

输出是JSON。在mySQL数据库中,有“ü,ä,ö”(德语)的条目 对于包含“ü,ä,ö”的条目,该值为“null”。我无法弄清楚这些角色有什么问题。

+0

当'json_encode'不返回字符串时发生错误。检查它是否返回NULL并处理错误情况。要找出发生了哪个错误,请使用['json_last_error'](http://php.net/manual/en/function.json-last-error.php)。 – hakre 2011-12-28 23:18:02

+1

哪种编码具有来自数据库的数据?可能你唯一需要做的就是建立连接字符集UTF-8。 – hakre 2011-12-28 23:19:57

+0

在mysql db中使用“latin1_general_ci” – tobias 2011-12-28 23:21:29

回答

1

在将每个字符串值传递给json_encode之前,先调用utf8_encode

+0

你能给我一个提示如何实现它。我已经在上面添加了我的PHP代码。 – tobias 2011-12-28 23:13:40

+0

用'$ output [] = is_string($ e)替换'$ output [] = $ e;'' utf8_encode($ e)? $ e;' – 2011-12-28 23:14:30

+0

好的,我们必须更换第二个?与a:但我仍然得到“空”而不是例如单词“für” – tobias 2011-12-28 23:17:39

0

对于通过ajax和json从php到js的瑞典字符集,同样的问题包含任何字符,例如:ÅÄÖ被赋值为null。该解决方案被证明是相当简单:

  1. 登录到PHP myadmin
  2. 变化的MySQL连接校对到utf8_swedish_ci(或你的语言等价,我的猜测是utf8_unicode_ci德国,但你可能知道更好)。
  3. 删除本地存储的数据,如缓存,饼干和localStorage以及它的工作原理!

因此,这里的关键是确保在phpmyadmin(或类似的)的主页中设置正确的MySQL连接排序规则,并在整个数据库中重复使用相同的排序规则。