Hallo Andreas,
Hallo Andreas,
diesmal ohne -Linidg, hehe...
Eigentlich immer ohne -Lindig ;-)
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 " "?
das "> " sind die Quoting-Charaktere bei dir. Du zitierst mit "> ".
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.
Ja.
Aber was machst du denn mit dem IE, der schickt bei mir € immer als
Zeichenkette "€"?
accept-charset="ISO-8859-1,UTF-8". Bei mir schickt er nie Entities. Probiere
doch hier mal ein wenig herum, das habe ich seinerzeit fuer den Mozilla-
Bugreport gemacht:
</cgi-bin/test.pl>
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?
Korrekt.
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?
Nein, es gibt doch die iconv-Erweiterung:
Grüße,
CK