如何解决php json_encode:尽管没有异常字符,但“格式错误的UTF-8字符”
我有一个脚本,该脚本创建一个数组,该数组包含一个表的条目,我想将该表编码为json以发送到我的应用程序。每个条目都是string=>string|int
的k / v对的关联数组。生成完整数组的代码如下:
$entries = [];
foreach($stats as $i => $stat){
$playerStats = new Player_Stats($stat);
$entry = [
'place' => $i,'name' => $playerStats->name(),'elo' => $playerStats->currentrating(),'highest' => $playerStats->highrating(),'masterPoints' => $playerStats->onlineMasterPoints(),'winLose' => $playerStats->matchesWonLost(),'winRate' => $playerStats->winPercent(),'numEvents' => $playerStats->numEvents(),'wins' => $playerStats->eventsWon(),'placed' => $playerStats->eventsPlaced()
];
$entries[] = $entry;
}
$result = json_encode($entries);
当我对条目进行计数或验证时,它清楚地表明已正确填充了正确的数据。 json_encode()
返回false。使用json_last_error_msg()
,在标题Malformed UTF-8 characters,possibly incorrectly encoded
中收到UTF-8错误。关于此问题的所有其他帖子,我都可以找到其他语言的字符。此数组中的所有内容均由英文字母和数字组成,所有ascii字符更不用说utf-8。
我只是想丢失一些琐碎的东西(我通常是)还是应该寻找或尝试其他的东西吗?
解决方法
您可以使用选项JSON_INVALID_UTF8_IGNORE
来忽略它们,这样您的代码将为json_encode($data,JSON_INVALID_UTF8_IGNORE);
这将忽略名称所描述的无效UTF-8。您可以在此处查看json_encode
的所有选项。 https://www.php.net/manual/en/function.json-encode.php
类似这样的方法可以解决问题:
$result = json_encode(array_map(utf8_encode,$entries))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。