Einige meiner Skripte verwenden unterschiedliche Kodierungen, und wenn ich versuche, sie zu kombinieren, ist dies zu einem Problem geworden.
Aber ich kann die Kodierung, die sie verwenden, nicht ändern. Stattdessen möchte ich die Kodierung des Ergebnisses von Skript A ändern und es als Parameter in Skript B verwenden.
Gibt es also eine einfache Möglichkeit, eine Zeichenkette in PHP von UTF-8 in ISO-88591 zu ändern? Ich habe mir utf_encode und _decode angesehen, aber sie tun nicht, was ich will. Warum gibt es keine "utf2iso()"-Funktion, oder ähnliches?
Ich glaube nicht, dass ich Zeichen habe, die nicht im ISO-Format geschrieben werden können, also sollte das kein großes Problem sein.
Werfen Sie einen Blick auf iconv()
oder mb_convert_encoding()
.
Nur so nebenbei: warum funktionieren utf8_encode()
und utf8_decode()
bei Ihnen nicht?
utf8_decode - Konvertiert einen String mit ISO-8859-1-Zeichen kodiert mit UTF-8 kodiert ist, in Einzelbyte-ISO-8859-1
utf8_encode - Kodiert eine ISO-8859-1 Zeichenkette in UTF-8
Also im Wesentlichen
$utf8 = 'ÄÖÜ'; // file must be UTF-8 encoded
$iso88591_1 = utf8_decode($utf8);
$iso88591_2 = iconv('UTF-8', 'ISO-8859-1', $utf8);
$iso88591_2 = mb_convert_encoding($utf8, 'ISO-8859-1', 'UTF-8');
$iso88591 = 'ÄÖÜ'; // file must be ISO-8859-1 encoded
$utf8_1 = utf8_encode($iso88591);
$utf8_2 = iconv('ISO-8859-1', 'UTF-8', $iso88591);
$utf8_2 = mb_convert_encoding($iso88591, 'UTF-8', 'ISO-8859-1');
alle dasselbe tun - wobei utf8_en/decode()
keine spezielle Erweiterung benötigt, mb_convert_encoding()
benötigt ext/mbstring und iconv()
benötigt ext/iconv.
Zunächst einmal sollten Sie keine unterschiedlichen Kodierungen verwenden. Das führt zu einem Durcheinander, und UTF-8 ist definitiv diejenige, die Sie überall verwenden sollten.
Wahrscheinlich ist Ihre Eingabe nicht ISO-8859-1, sondern etwas anderes (ISO-8859-15, Windows-1252). Um diese zu konvertieren, verwenden Sie iconv oder mb_convert_encoding
.
Trotzdem sollten utf8_encode
und utf8_decode
für ISO-8859-1 funktionieren. Es wäre schön, wenn Sie einen Link zu einer Datei oder einen uuencoded oder base64 Beispielstring posten könnten, bei dem die Umwandlung fehlschlägt oder unerwartete Ergebnisse liefert.