json_encode():参数中的 UTF-8 序列无效

2022-08-30 09:51:52

我正在调用来自具有排序规则的MySQL数据库的数据。问题是有些行有我无法清理的奇怪数据。例如符号,所以一旦它到达,它就会失败。json_encode()utf8_general_cijson_encode()json_encode(): Invalid UTF-8 sequence in argument

我已经尝试过,即使它不断通过并造成严重破坏。utf8_encode()utf8_decode()mb_check_encoding()

在 Mac 上运行 PHP 5.3.10。所以问题是 - 我如何清理无效的utf8符号,保留其余的数据,这样就可以工作了?json_encoding()

更新。以下是重现它的方法:

echo json_encode(pack("H*" ,'c32e'));

答案 1

我遇到了一个类似的错误,由于查询中返回了错误的字符集,导致json_encode在字符串中存在hi-ascii字符(例如大括号)时返回空字段。

解决方案是通过添加以下内容来确保它以utf8的形式出现:

mysql_set_charset('utf8');

在 mysql connect 语句之后。


答案 2

似乎符号是 ,但是由于数据由不应该公开的姓氏组成,因此只显示了第一个字母,并且是由 just 完成的,这对于多字节字符串来说是错误的,并造成了整个麻烦。将其更改为 - 像吊饰一样工作。Å$lastname[0]mb_substr($lastname, 0, 1)


推荐