hi,
Als Übergangslösung, bevor du dich an UTF-8 wagst, kannst du ja erst einmal dafür sorgen, dass überall ISO-8859-1/Windows-1252/Latin1 vereinbart wird / eingestellt ist.
seit mir klar ist, dass mein externes Modul durchgängig
ISO-8859-1 benutzt (ich kann mit Sicherheit sagen, was
darin alles verwendet wird. Ich habe nur an sehr vielen
Stellen in dem Code u.A. in XML-Files die Angabe von
ISO-8859-1 gefunden) und seit dem mir klar ist, dass es
vielmehr um eine einheitliche Benutzung des selben als
um die Benutzung eines bestimmten geht, verfolge ich Deinen
Vorschlag. Auf den ersten Blick sieht es so aus, als würde
alles korrekt dargestellt, was ja erstmal ganz schön ist ...
Allerdings verstehe ich nicht ganz, warum es einfacher sein
soll, dafür zu sorgen, dass überall ISO-8859-1 verienbart/
eingestellt ist. Dass es wahrscheinlich fehlerunanfälliger
ist, sehe ich ein, weil das wohl bei den meisten Einstellungen
der Default ist. Leider weiss ich aber nun auch nicht mehr,
wo welche Einstellung oder Vereinbarung welche andere u.U.
falsche überschreibt.
Was ich für mich als sinnvoll erachten würde, wäre eine Art
Rangliste. Was überschreibt was bzw. wer ist stärker. Ein
Paar Dinge sind, glaube ich, mir klar:
-
für jede Datei, die in irgendeiner Form zur Anzeige kommt
und die Sonderzeichen enthält, muss beim Abspeichern die
Zeichenkodierung festgelegt werden. -
das wohl schwächste Gleid in der Kette habe ich festgelegt:
<meta content="text/html; charset=iso-8859-1"
- Der Server sendet im Header die Zeichenkodierung mit. Dass
der die Dateien vor dem Ausliefern auf ihren Zeichnsatz
überprüft kann ich mir nicht vorstellen. Ich interpretiere
das, was ich darüber gefunden habe so:
Mit den Direktiven AddCharset und AddDefaultCharset werden
die Zeichenkodierungen festgelegt, mit denen die entsprechenden
Dateiendungen ausgeliefert werden. Diese Information wird
dem Browser im Header mitgesendet. Legt man die Direktiven
nicht fest, bleibt dem Browser nur zu Raten. Unter phpinfo()
habe ich folgende Informationen bzgl. Zeichensatz gefunden:
PHP Core
--------
default_charset no value
Apache Environment
------------------
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP Headers Information
------------------------
HTTP Request Headers
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP Response Headers
Content-Type text/html; charset=ISO-8859-1
PHP Variables
-------------
_SERVER["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7
-
Die vom Server gesendete Information lässt sich mit
php:header() überschreiben. -
Für den Datenbankserver habe ich einen verwedendeten
Zeichensatz unter phpmyadmin gefunden:
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
-
für die Kommunikation zwischen Web- und Datenbankserver
wird auch irgendwo ein Zeichensatz festgelegt. -
Auch der lässt sich explizit durch "SET NAMES" überschreiben.
Ich denke, für mein Verständis muss das Ziel nun erstmal sein,
überall dort explizit den zu verwendenden Zeichensatz festzulegen,
wo er festgelegt werden muss, mit keiner Einstellung eine andere
zu überschreiben und am Ende gezielt den Default festlegen/
überprüfen, um eine weitere Sicherheit einzubauen.
beste gruesse,
heinetz