json_encode() 输出数据只认识UTF-8,所有在输出数据时,注意数据编码格式!!! 解决方案:
Wenn Sie eine ANSI-codierte Zeichenfolge haben, verwenden Sie utf8_encode() ist
die falsche Funktion, um damit umzugehen. Sie müssen es zuerst ordnungsgemäß von ANSI in UTF-8 konvertieren. Dadurch wird die Anzahl der Unicode-Escape-Sequenzen wie u0082 von sicherlich reduziert
die JSON-Ausgabe, aber technisch gesehen sind diese Sequenzen für JSON gültig, Sie müssen keine Angst davor haben.
Ansi in UTF-8 mit PHP konvertierenjson_encode funktioniert
mit UTF-8 codiert
Zeichenfolgen nur. Wenn Sie gültige json erfolgreich erstellen müssen
von einem ANSI codierten
Wenn Sie eine Zeichenfolge eingeben möchten, müssen Sie sie zuerst neu kodieren/konvertieren in UTF-8 .
Dann json_encodewird
Arbeiten Sie einfach wie dokumentiert.So konvertieren Sie eine Kodierung von ANSI (mehr
Richtig, ich gehe davon aus, dass Sie ein Windows-1252 codiert haben
Zeichenfolge, die beliebt ist, aber fälschlicherweise als ANSI bezeichnet wird)
an UTF-8 Sie
kann die mb_convert_encoding() Funktion nutzen:$str = mb_convert_encoding($str,"UTF-8","Windows-1252");Eine weitere Funktion in PHP, die die Kodierung/den Zeichensatz einer Zeichenfolge konvertieren kann, heißt iconv basiert
onlibiconv. Sie können es auch verwenden:$str = iconv("CP1252","UTF-8", $str);Hinweis zu utf8_encode()utf8_encode() does
only work for Latin-1,
not for ANSI.
So you will destroy part of your characters inside that string when you run it through that function.Related: What is ANSI format?For a more fine-grained control of what json_encode() returns,
see the list of predifined constants(PHP version dependent, incl. PHP 5.4, some constants
remain undocumented and are available in the source code only so far).Changing the encoding of an array/iteratively (PDO comment)As you wrote in a comment that you have problems to apply the function onto an array, here is some code example. It's always needed to first change
the encoding before using json_encode.
That's just a standard array operation, for the simpler case of pdo::fetch() a foreach iteration:while($row = $q->fetch(PDO::FETCH_ASSOC)){foreach($row as&$value){
$value = mb_convert_encoding($value,"UTF-8","Windows-1252");}
unset($value);# safety: remove reference
$items[]= array_map('utf8_encode', $row );}
项目中遇到的问题,记录以备后用 .
文献:
json_encode() non utf-8 strings
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了php json_encode 数据,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。