PHP Utf8-Dekodierung Problem
Habe ich die folgende Adresse line: Praha 5, Staré Město,
Ich utf8_decode () - Funktion auf dieser string, bevor ich schreiben kann, in eine PDF-Datei (mit domPDF lib).
Jedoch, die php utf8-decode-Funktion für die oben Adresszeile angezeigt wird, falsch (bzw. unvollständig).
Folgenden code:
<?php echo utf8_decode('Praha 5, Staré Město,'); ?>
Produziert dies:
Praha 5, Staré M?sto,
Jede Idee, warum ˇ ist nicht immer entschlüsselt?
- utf8_decode einfach konvertiert einen string in UTF-8 kodiert,wird Ihr string ist utf8_encoded ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
utf8_decode
wandelt die Zeichenkette von UTF-8-Kodierung auf ISO-8859-1 ein.k.ein. "Latin-1".Die Latin-1-Codierung nicht dargestellt werden kann, der Buchstabe "ø". Es ist so einfach.
"Decode" ist total irreführend, es macht das gleiche wie
iconv('UTF-8', 'ISO-8859-1', $string)
.Sehen Was Jeder Programmierer Absolut Positiv Muss Wissen Über Kodierungen Und Zeichensätzen Arbeiten Mit Text.
Problem ist in der PHP-Datei-Codierung , speichern Sie Ihre Datei in
UTF-8
Codierung , dann auch keine Notwendigkeit für die Verwendungutf8_decode
wenn diese Daten'Praha 5, Staré Město,'
aus der Datenbank , besser ändern charsetUTF-8
braucht Ihr gar nicht (@Rajeev :dieser string wird automatisch erkannt als utf-8-codiert :
immer wieder UTF-8.).
Würden Sie lieber sehen :
https://code.google.com/p/dompdf/wiki/CPDFUnicode
Ich aufgewickelt mit einem home-grown-UTF-8 /UTF-16-decoding-Funktion (convert to &#Zahl; Darstellungen) habe ich nicht gefunden, irgendein Muster zu, warum UTF-8 wird nicht erkannt, ich vermute, es ist, weil die "verschlüsselt-als" Sequenz ist nicht immer genau in der gleichen position in der Zeichenfolge zurückgegeben. Sie tun könnten, einige weitere überprüfung, dass.
Drei-Zeichen-UTF-8-Anzeige: $startutf8 = chr(0xEF).chr(187).chr(191); (wenn Sie sehen das ÜBERALL, nicht nur die ersten drei Zeichen, der string ist UTF-8-codiert)
Decodieren nach UTF-8 Regeln; dies ersetzt eine frühere version, die tuckerten durch byte für byte:mit