Hallo Andreas,
diesmal ohne -Linidg, hehe...
Du kuckst, ob der String ein Zeichen zwischen 127 und 159 enthält
und wenn ja, tippst Du auf Windows-1252 und convertierst den
ganzen string (length($val)) von Windows-1252 nach UTF-8?
So ganz einfach ist es nicht. Ich kann davon ausgehen, dass der
Input entweder ISO-8859-1 oder UTF-8 ist. Immer noch eine
Wahlmoeglichkeit zu viel. Also habe ich mir dafuer etwas einfallen
lassen: ich gebe in einem Feld ÿ mit — bei UTF-8 wird das dann
als \303\277 geschickt, bei anderen Charsets mit etwas anderem.
Du gibst "ÿ> " mit. Wozu sind denn ">" und " "?
Daran kann ich also erkennen, ob UTF-8 oder ExternCharset (aus
einer Konfigurations-Datei) geschickt wurde. Gut, dann muss man
ueber den Bug der Geckos bescheid wissen: sie schicken € als \x80,
wenn der Seiten-Charset ISO-8859-1 ist.
Der Grund, warum Mozilla das € immer darstellt, ja? D.h. aber auch, daß er im Darstellungsverhalten die Besonderheit hat, \x80 (128) anzuzeigen.
Aber was machst du denn mit dem IE, der schickt bei mir € immer als Zeichenkette "€"?
In Latin1 ist aber der Bereich zwischen \x7F und \x9F nicht definiert, also kann es sich (weil wir ja bescheid wissen) nur um Windows-1252 handeln.
Also: Du prüfst _erst_, ob ÿ korrekt als utf-8 zurückgegeben wurde, wenn nicht prüfst Du, ob Zeichen zwischen 127 und 159 vorkommen. Und wenn ja, tippst Du auf Windows-1252?
Wenn man sowas in PHP machen wollte, bräuchte man aber eine handgestrickte Vergleichstabelle, um die Zeichen von 127 bis 159 in das richtige utf-8 Zeichen zu übersetzen, gell?
Gruß, Andreas
--
<img src="http://was-ist-das.andreas-lindig.de/was_ist_das_fetzen.jpg" border="0" alt="">
hier könnte auch ruhig mal'n neues Bild stehen.