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

问题描述

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

解决方法

我正在json_encode()使用utf8_general_ci排序规则调用来自MySQL数据库的数据。问题是某些行包含我无法清除的怪异数据。例如,符号,所以一旦到达json_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'));