有人能告诉我为什么会出现以下错误吗:
PHP Warning: json_encode(): Invalid UTF-8 sequence in argument
当json_encode
'调用以下数组(输出到Apache错误日志)时:
Array'n('n [currency] => GBP'n [currency_symbol] => 'xa3'n)'n,
使用以下代码(我使用的是PHP 5.4.45):
echo json_encode($output);
我正在用AJAX发出请求,当我在控制台中查看时,我看到了以下内容:
"currency":"GBP","currency_symbol":空
因此,当它出错时,PHP只是将其返回为null
为什么只有£
符号而不是美元($
)或欧元(€
)会发生这种情况?
尝试写入
mysqli_query('SET CHARACTER SET utf8')
在您的SELECT查询之前。
最常见的问题是检索与预期结果不完全相同的字符集的数据。
编辑
如果你使用正确的PHP函数,这是安全的:
mysqli_set_charset('utf8');
查看更多信息:http://php.net/manual/en/mysqli.set-charset.php
在将default_charset
设置为UTF-8
:之前尝试使用JSON_UNESCAPED_UNICODE
<?php
ini_set('default_charset', 'UTF-8');
$email_hooks = array(
"forgot_password" => array(
"name" => "Forgot Password",
"keys" => array(
"site_url" => "Site URL",
"current_date" => "Curremt Date",
"user_name" => "User name",
"name" => "Name of the user",
"reset_url" => "Url for resetting password",
"user_email" => "£"
)
)
);
echo json_encode($email_hooks,JSON_UNESCAPED_UNICODE);
输出:
{"放弃密码":{"名称":"忘记密码","密钥":{