Heim >Backend-Entwicklung >PHP-Tutorial >php json_encode-Daten

php json_encode-Daten

WBOY
WBOYOriginal
2016-08-08 09:20:241221Durchsuche
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教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn