我正在使用几乎最新版本的 php ( 5.5.11 ),这就是问题所在。当我使用json_encode
字符串的一部分时,它返回false。一开始我使用的是substr
,但后来我意识到在处理非英文字符串时这是完全错误的。但即使在我使用之后,mb_substr
我仍然看到json_encode
返回false
:
$s = "に搭載されるようになると、その手軽さからJは急速に普及していく。、通信に関する標準を策定する国際団体インターナショナル";
$a = mb_substr($s, 0, 10);
如你所见,
var_dump( json_encode([
'd' => $a
]) );
返回false
, 和
var_dump( json_encode([
'd' => $s
]) );
返回正确的 json。
在查看json_last_error时,我发现这是由于Malformed UTF-8 characters, possibly incorrectly encoded
. 所以问题是 mb_substr 给了我格式错误的字符。
当我查看时,var_dump($a);
我看到它产生了string(10) "に搭載�"
(我假设每个日语字符是 3 个字节,并且那个问号是格式错误的字符)。
那么我怎样才能以这样的方式从字符串中获取子字符串,而不会得到格式错误的字符串呢?