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 );}
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