PHP json 编码 - 格式错误的 UTF-8 字符,可能编码不正确
我正在使用一个数据数组,并且有一个包含俄语字符的字段。json_encode($data)
我用它来显示该字段的编码,并显示UTF-8。mb_detect_encoding()
我认为json编码失败是因为其中有一些不好的字符,比如“ра▒”。我在数据上尝试了很多东西,它会通过传递该错误,但随后数据看起来不再正确。utf8_encode
如何处理此问题?
我正在使用一个数据数组,并且有一个包含俄语字符的字段。json_encode($data)
我用它来显示该字段的编码,并显示UTF-8。mb_detect_encoding()
我认为json编码失败是因为其中有一些不好的字符,比如“ра▒”。我在数据上尝试了很多东西,它会通过传递该错误,但随后数据看起来不再正确。utf8_encode
如何处理此问题?
如果里面有一些非 utf8 字符,即使其中大多数是 utf8 字符,也会发生此问题。这将删除任何非 utf8 字符,现在它可以工作。
$data['name'] = mb_convert_encoding($data['name'], 'UTF-8', 'UTF-8');
如果您有一个多维数组以JSON格式编码,则可以使用以下函数:
如果发生JSON_ERROR_UTF8:
$encoded = json_encode( utf8ize( $responseForJS ) );
以下函数用于以递归方式对数组数据进行编码
/* Use it for json_encode some corrupt UTF-8 chars
* useful for = malformed utf-8 characters possibly incorrectly encoded by json_encode
*/
function utf8ize( $mixed ) {
if (is_array($mixed)) {
foreach ($mixed as $key => $value) {
$mixed[$key] = utf8ize($value);
}
} elseif (is_string($mixed)) {
return mb_convert_encoding($mixed, "UTF-8", "UTF-8");
}
return $mixed;
}