Text- encoding auslesen
peter
- php
Hallo,
kann man irgendwie auslesen, mit welchem Zeichensatz/Encoding entgegengenommene Daten erstellt wurden?
z.B. die txt-Datei, die der Auftraggeber hochlädt und die mit PHP weiterverarbeitet wird?
...oder das Textfeld im Browser, das dann in die Datenbank eingetragen werden soll?
Grüße
peter
echo $begrüßung;
kann man irgendwie auslesen, mit welchem Zeichensatz/Encoding entgegengenommene Daten erstellt wurden?
Prinzipiell kann man das nicht. Als Mensch kann man beim Lesen verschiedene Kodierungen durchprobieren und anhand des des Kontextes entscheiden, ob bestimmte Zeichen richtig interpretiert werden. Eine Machine kann das nicht. Sie kann gegebenenfalls formale Parameter prüfen, beispielsweise UTF-8-Sequenzen. Wenn eine Datei ungültiges UTF-8 ist, kann sie aber immer noch alles mögliche andere sein.
...oder das Textfeld im Browser, das dann in die Datenbank eingetragen werden soll?
Das ist was anderes. Hier halten sich die Browser an die Kodierung der Seite, in der das Textfeld steht. Es gibt zwar das accept-charset für das Formular, aber daran halten nicht alle Browser.
echo "$verabschiedung $name";
hi dedlfix,
erstmal vielen Dank für die Antwort.
kann man irgendwie auslesen, mit welchem Zeichensatz/Encoding entgegengenommene Daten erstellt wurden?
Prinzipiell kann man das nicht.
das ist ja schrecklich!!!
»» ...oder das Textfeld im Browser, das dann in die Datenbank eingetragen werden soll?
Das ist was anderes. Hier halten sich die Browser an die Kodierung der Seite, in der das Textfeld steht. Es gibt zwar das accept-charset für das Formular, aber daran halten nicht alle Browser.
Was ist denn, wenn der User im Browser an "Ansicht > Codierung" rumgeschraubt hat ( während die Seite geöffnet war).
Kommts dann in der eingestellten Codierung rüber oder zählt dann immer noch die Seiten-Codierung?
gruß
peter
echo $begrüßung;
» kann man irgendwie auslesen, mit welchem Zeichensatz/Encoding entgegengenommene Daten erstellt wurden?
» Prinzipiell kann man das nicht.
das ist ja schrecklich!!!
Es ist wie bei jeder Kodierung/Verschlüsselung: ohne den passenden Schlüssel kann man nur raten.
Was ist denn, wenn der User im Browser an "Ansicht > Codierung" rumgeschraubt hat ( während die Seite geöffnet war).
Kommts dann in der eingestellten Codierung rüber oder zählt dann immer noch die Seiten-Codierung?
Probier es doch aus! Der IE6 und der FF2 senden die Textfeldwerte in der aktuell eingestellten Kodierung und Hidden-Felder bleiben wie sie sind.
echo "$verabschiedung $name";
(Hallo|Hi(ho)|Nabend) peter,
kann man irgendwie auslesen, mit welchem Zeichensatz/Encoding entgegengenommene Daten erstellt wurden?
z.B. die txt-Datei, die der Auftraggeber hochlädt und die mit PHP weiterverarbeitet wird?
Wenn man nicht allzu pingelig ist, kann man durch Prüfen der Byte-Order-Mark zumindest UTF-16- und UTF-32-Kodierungen (und ihre Unterarten) auseinanderhalten. In UTF-8 kodierter Text wird dagegen nicht immer mit einer BOM gespeichert. In dem Fall kann man zwar Vermutungen anstellen, aber mit 100-prozentiger Sicherheit wird man nicht herausbekommen, um welche Kodierung es sich handelt.
Beispielsweise könnte eine Maschine nicht erkennen, ob "„Fix, Schwyz!“ quäkt Jürgen blöd vom Paß." in ISO-8859-1 oder in UTF-8 kodiert ist. Ein Mensch würde wohl auf UTF-8 tippen und in den meisten Fällen Recht haben. Aber was ist, wenn diese Zeichenkette nur die Darstellung von UTF-8 in ISO-8859-1 zeigen soll?
...oder das Textfeld im Browser, das dann in die Datenbank eingetragen werden soll?
In dem Fall teilt der Browser dem Webserver mit, in welcher Kodierung er den Text gesendet hat.
--
[1] Eigentlich sollte das Thema schlicht „BOM“ lauten, aber dafür gabs die Fehlermeldung „Sie haben ein zu kurzes Thema angegeben“ ... ;-)
MffG
EisFuX