json_encode函数:特殊字符

问题描述

您的输入必须编码为UTF-8或ISO-8859-1。

http://www.php.net/manual/zh/function.json- encode.PHP

因为如果您尝试转换非utf8字符数组,则将获得0作为返回值。

从5.5.0开始,失败时的返回值从空字符串更改为FALSE。

解决方法

使用json_encode对数组进行编码时,包含特殊字符的数组元素将转换为空字符串:

$arr = array ( "funds" => "ComStage STOXX®Europe 600 Techn NR ETF","time"=>....);
$json = json_encode($arr);

JSON编码后,元素[funds]为空。它只能使用特殊字符(如版权,商标等)进行,例如“ ComStageSTOXX®Europe600 Techn NR
ETF”中的那些。

有什么建议么?

谢谢

更新:这是在填充数组之前解决问题的原因(所有名称均取自数据库):

$mysqli->query("SET NAMES 'utf8'");