ile çalışırken yanlış döndürüyor php'nin (5.5.11) en son sürümünü kullanıyorum ve sorun şu. Dizenin parçası json_encode
kullandığımda, false değerini döndürür. Başlangıçta substr
kullanıyordum, ancak İngilizce olmayan dizelerle uğraşırken bunun tamamen yanlış olduğunu anladım. Ama mb_substr
kullanılan sonra bile hala görmek json_encode
döndürür false
: Gördüğünüz gibijson_encode, multibyte substring
$s = "に搭載されるようになると、その手軽さからJは急速に普及していく。、通信に関する標準を策定する国際団体インターナショナル";
$a = mb_substr($s, 0, 10);
,
var_dump(json_encode([
'd' => $a
]));
döner false
ve
var_dump(json_encode([
'd' => $s
]));
döner doğru json.
json_last_error'a baktığımda, bunun Malformed UTF-8 characters, possibly incorrectly encoded
nedeniyle olduğunu görüyorum. Yani sorun, mb_substr bana hatalı biçimlendirilmiş karakterler veriyor olmasıdır.
var_dump($a);
'a baktığımda, string(10) "に搭載�"
(her Japon karakterinin 3 bayt olduğunu ve bu soru işareti hatalı biçimlendirilmiş char olduğunu varsayalım) olduğunu görüyorum.
Dize kaynaklı bir dize bulamayacak şekilde nasıl bir alt dizgi alabilirim?
, bu senin 'mb_internal_encoding' 'utf-8' olarak ayarlanmamış anlamına gelmez? Dahili kodlamayı doğru şekilde ayarlamamak daha iyi bir çözüm olabilir mi? –