Zeichensatz-Chaos

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Zeichensatz-Chaos

Beitrag von PhilippK »

Hallo zusammen,

bei einem Projekt stehe ich gerade vor einem kleinen Zeichensalat - und den versuche ich gerade etwas zu entwirren. Eigentlich denkt man: ganz einfach, wenn man überall sauber die richtige Kodierung angibt. Und da sollte eigentlich ISO 8859-15 die beste Wahl sein. Doch ganz so einfach machen es einen die beteiligten Akteure nicht:
  • PHP: dem ist das relativ egal - auf jeden Fall sind alle Dateien richtig nach ISO 8859-15 kodiert und auch entsprechend im Seitenkopf angegeben (einmal per Header vorab und einmal als http-equiv)
  • MySQL: kennt ISO 8859-15 nicht sondern nur latin1, was aber nicht ISO 8859-1 entspricht sondern Windows-1252.
  • Mehrere Web-Browser: die scheinen wohl ihre Daten recht unvoreingenommen als Windows-1252 zu senden. Der Firefox lässt sich mit accept-charset dazu bringen, ISO 8859-15 zu verwenden - aber nicht der MSIE 6
  • Mehrere E-Mail-Clients: die scheinen wohl keine großen Probleme zu haben - sofern sie die richtigen Daten bekommen.
Solange da noch keine E-Mail im Spiel war, ging das recht einwandfrei - auch wenn es mir noch nicht so ganz erklärlich ist. Die Daten (Testweise immer das €-Zeichen) wurden richtig in die DB geschrieben (unter oben genannten Prämissen verständlich), aber auch richtig ausgegeben (nicht mehr verständlich - aber egal). Bei der E-Mail wird nun aber das €-Zeichen falsch kodiert (nämlich nach Windows-1252), so dass es beim Empfänger nicht erscheint (mit accept-charset kann ich das Verhalten freundlicherweise umdrehen). Interessanterweise tritt das Problem nicht mehr auf, wenn eine PHP-Installation unter Windows mit IIS verwendet wird.

Doch wie komme ich nun am besten aus dem Schlamassel?
  • ISO 8859-1 scheidet erst mal aus, da hier das Eurozeichen nicht existiert. Man könnte natürlich hoffen, dass das überall wie unter Windows-1252 implementiert ist - aber schön wäre das nicht.
  • ISO 8859-15 scheint wie oben beschrieben nicht sauber zu gehen.
  • Windows-1252 scheint mir gerade der kleinste gemeinsamme Nenner zu sein. Ich weiß aber nicht, ob ich dann mit ein paar Unix-Systemen Probleme bekomme.
  • Unicode (UTF-8) war für mich erst mal die erste Lösungsidee - weil damit könnte man es sauber implementieren. Doch gibt es mehrere Beiträge, die einem wegen mangelnder PHP-Unterstützung davor abraten: man müsste zum einen einige Funktionen mit der mb_...-Variante ersetzen, zum anderen macht mir die Perl-Regex noch etwas Sorgen.
Hat jemand damit Erfahrungen sammeln können? Wie sieht es mit Windows-1252 unter Linux & Co aus? Und laufen die Perl-Regex allein durch den u-Modifier?

Viele Grüße,

Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
area57
Mitglied
Beiträge: 2111
Registriert: 26.12.2005 19:43
Wohnort: Berlin
Kontaktdaten:

Re: Zeichensatz-Chaos

Beitrag von area57 »

PhilippK hat geschrieben:(...)Hat jemand damit Erfahrungen sammeln können? Wie sieht es mit Windows-1252 unter Linux & Co aus? Und laufen die Perl-Regex allein durch den u-Modifier?
Also ich kann dir sagen das SuSe Linux 10 mit dem Windows-1252 recht gut klarkommt, aus meiner Erfahrung her. Hoffe das konnte helfen ;)

Windows - Ein Slangebegriff der Indianer: Weißer Mann starrt durch Glasscheibe auf Sanduhr
In a world without walls - Who need's windows and gates???
Antworten

Zurück zu „Coding & Technik“