Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: Zeichensätze konvertieren, zB %20 als Leerzeichen, %C3%BC als ü
Hallo,
Das Problem ist sicher für die meisten hier nicht schwer, abe rich hatte bis jetzt noch nie damit zu tun, daher scheitere ich daran. Ich habe eine Datei, die ich zeilenweise mit PHP einlese. So habe ich jede Zeile in einem String. Leider verwendet die Datei einen etwas konischen Zeichensatz. Da werden zB Leerzeichen mit %20 oder ü's mit %C3%BC umschrieben. Nun meine zwei Fragen:
1. Wie heisst dieser Zeichensatz?
2. Gibt es in PHP eine Funktion, mit der ich alle Zeichen dieser Art im String in lesbare Zeichen konvertieren kann?
Vielen Dank schonmal für eure Antworten!
mf_2
das ist eigentlich kein zeichensatz, sondern nur die kodierung bestimmter bytes - der tatsächlich verwendete zeichensatz ist dafür vollkommen egal. die kodierung wird vor allem benötigt, wenn du per GET besondere zeichen übergeben willst.
zum de/encoden gibt (raw)urlencode bzw. (raw)urldecode:
http://de2.php.net/manual/de/function.urldecode.php
Ah danke! :)
Ich war schon am Verzweifeln, da weder html_entity_decode() noch htmlspecialchars_decode() den gewünschten Erfolg brachten.
EDIT:
Jetzt geht zwar das Leerzeichen, das ü wird aber als ü dargestellt. Wie konvertiere/decodiere ich das?
EDIT2:
Ich habe jetzt dieses Script gefunden, is zwar keine Funktionm, erfüllt aber denselben Zweck:
$ausgabe = str_replace ("ü", "ü", $ausgabe);
$ausgabe = str_replace ("Ãœ", "Ü", $ausgabe);
$ausgabe = str_replace ("ö", "ö", $ausgabe);
$ausgabe = str_replace ("Ö", "Ö", $ausgabe);
$ausgabe = str_replace ("ä", "ä", $ausgabe);
$ausgabe = str_replace ("Ä", "Ä", $ausgabe);
$ausgabe = str_replace ("ß", "ß", $ausgabe);
ergänzung:
dass ü zu %C3%BC wird (also zwei bytes) deutet darauf hin, dass hier utf-8 als zeichensatz verwendet wird.
da die utf-8 unterstützung von php recht bescheiden ist (strings werden nur als bytefolgen aufgefasst), kann es sein dass du je nach verwendungszweck entweder mbstring (http://de.php.net/manual/de/ref.mbstring.php) verwenden solltest, oder (falls es die verwendeten zeichen zulassen) das ganze mit utf8_decode (http://de.php.net/manual/de/function.utf8-decode.php) in iso-8859-1 konvertierst.
am notwendigen urldecode ändert das aber natürlich nichts, den musst du auf jeden fall als erstes auf deine strings loslassen.
EDIT:
Jetzt geht zwar das Leerzeichen, das ü wird aber als ü dargestellt. Wie konvertiere/decodiere ich das?
siehe ergänzung :)
Cool, das hört sich noch besser an als mein EDIT2. Danke :biggrin:
und wenn wir gerade dabei sind:
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) (http://www.joelonsoftware.com/articles/Unicode.html)
es lohnt sich wirklich, sich damit zu beschäftigen.
url_encode, url_decode, htmlentities?
HellHorse
2006-08-07, 15:46:50
und wenn wir gerade dabei sind:
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) (http://www.joelonsoftware.com/articles/Unicode.html)
es lohnt sich wirklich, sich damit zu beschäftigen.
Characters vs. Bytes (http://www.tbray.org/ongoing/When/200x/2003/04/26/UTF) finde ich wesentlich besser.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.