我为学校准备了一个自定义JSON api,所以我可以查找作业。我们调用结果字符串 $ result 。不幸的是,似乎我回来的UTF-8格式不正确。运行mb_check_encoding确认该字符串是UTF-8编码的,但是我无法解码JSON字符串。
当我在字符串上使用json_decode时,它会返回NULL并且json_last_error()会向我显示错误" JSON_ERROR_UTF8 " ='格式错误的UTF-8字符,可能编码错误'。
使用iconv("UTF-8", "UTF-8//TRANSLIT", $result)
抛出PHP通知:
iconv():检测到输入字符串中的非法字符 C:\瓦帕\ WWW \ Tietgen \ homework.php
使用iconv("UTF-8", "UTF-8//IGNORE", $result)
代替,给我一个JSON结果,但是它被中间切断(大概是在TRANSLIT检测到非法字符的同一点),给我一个JSON错误
发现了意外的控制字符
正在json_decode(utf8_encode($result))
正在返回NULL
,并且给了我这个JSON错误:
语法错误,格式错误的JSON
回显utf8_encode($ result)也被切断了。
我在我的comp上运行了一个名为JSON Viewer的程序。当我从原始源(api,我正在访问)粘贴JSON时,它在JSON Viewer中完美运行。 这看起来像JSON是有效的。
我已经坚持了一段时间,有没有办法修复格式错误的UTF-8字符串?如果是这样,怎么样? :)
不幸的是我无法分享API:/
另外,我可以看到iconv资源密集,是否有更好的方法? :)
答案 0 :(得分:0)
我不知道@Jazerix问题是否如下,我可能有人有同样的问题:
我从MySQL数据库获取数据到PHP数组。我将MySQL中的列设置为utf8_unicode_ci
,并在PHP中设置charset:$db->exec($sql, null, 'utf8');
我收到错误
语法错误,格式错误的JSON
因为我在数据库中有一个枚举列,并且该列没有UTF-8编码。我有一个名为'Campaña'的选项,这是关键的'ñ'字符。
希望它有所帮助。