我正在json_encode()使用utf8_general_ci排序规则调用来自MySQL数据库的数据。问题是某些行包含我无法清除的怪异数据。例如,符号�,所以一旦到达json_encode(),它就会失败json_encode(): Invalid UTF-8 sequence in argument。
json_encode()
utf8_general_ci
�
json_encode(): Invalid UTF-8 sequence in argument
我已经尝试过utf8_encode()和utf8_decode(),即使这样做,mb_check_encoding()但它会不断通过并造成严重破坏。
utf8_encode()
utf8_decode()
mb_check_encoding()
在Mac上运行PHP 5.3.10。因此,问题是-如何清除无效的utf8符号,保留其余数据,以便json_encoding()可行?
json_encoding()
更新。这是一种重现它的方法:
echo json_encode(pack("H*" ,'c32e'));
好像符号是Å,但由于数据由不应公开的姓氏组成,因此只显示了第一个字母,并由just来完成$lastname[0],这对于多字节字符串是错误的,并造成了整个麻烦。更改为mb_substr($lastname, 0, 1)-就像魅力一样。
Å
$lastname[0]
mb_substr($lastname, 0, 1)