Hello,
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8-unicode_ci
Damit Umlaute auf der HTML-Seite richtig angezeigt werden, verwende ich benannte Zeichen
Das ist nicht mehr notwendig, wenn Du die Daten auch nach dem Erfassen als UTF-8 abspeichern lässt.
Das ist dann aber eine Sache Deines Editors, mit dem Du die Scripte schreibst.
Der Editor lässt Dir über das OS die Daten am Bildschirm so anzeigen, wie sie in der eingestellten Landessprache aussehen sollen, egal ob sie im UTF-8-Code ein, zwei, drei oder noch mehr Bytes benötigen. Wenn Du ein 'Ü' eintippst, werden vom Editor im Hintergrund (bei richtiger Einstellung) also 2 Bytes in die Datei geschrieben (hoffe, dass das jetzt stimmt).
http://de.selfhtml.org/inter/unicode.htm
Um nun die Bytes im Editor (auch im Browser) nicht aus Versehen einzeln anzeigen zu lassen in einem falschen Zuordnungssystem (also zum Beispiel in ISO 8859-X, X je nach Spracheinstellung), sondern eben immer die Sequenzen in der UTF-8-Decodierung erkennen zu lassen, muss der Browser (Editor) wissen, dass es sich um eine in UTF-8 codierte Datei handelt.
Die benannten Zeichen werden in der Datenbank als ä, ü, usw. gespeichert, nicht als benannte Zeichen.
Das kannst Du eigentlich nur beantworten, wenn Du weißt, wie der Editor, mit dem Du Dir die Bytes aus der Datenbank anzeigen lässt, das handhabt. Wenn Du sehen willst, welches Bytmuster drinsteht, musst Du z.B. einen Hex-Editor verwenden, die Darstellung also in einer numerischen, auf 16 dargestellte Zeichen reduzierten Weise durchführen lassen.
Wo wird das bestimmt? Ist das eine Einstellung vom Apache? Helft mir, ich habe keine Ahnung - wo kann ich das einstellen?
Der Apache hat eine Standardeinstellung für dfas Default-Character-Set. Passend zu diesem sendet er den HTTP-Header an den Client, der dann annimmt, dass die Ressourcen auch in dieser Codierung geliefert werden.
Wie Du die Daten in der Datenbank abspeicherst, ist für die Schiene "Erfassung - Speicherung - Wiedergabe" erst einmal egal.
Wenn Du aber innerhalb der Datenbank mit den abgespeicherten Texten (Zahlentypen und Datumstypen sind ja für Westeuropa gar nicht betroffen) sinnvoll innerhalb der Datenbank arbeiten willst, sie also z.B. richtig sortieren willst, Substrings ausschneiden willst, usw, dann muss die Datenbank die Codierung auch berücksichtigen.
In der Datenbank steht das 'ü' in dem utf-8-codierten String 'Große Änderungsübersicht' nicht mehr an Byteposition Nr 16, sondern weiter hinten, da sowohl das 'ß', als auch das 'Ä' vorher schon mehr als ein Byte in Anspruch genommen haben.
Ich hoffe, dass ich die Verwirrung nicht vergrößert habe, sondern etwas Licht ins Dunkel gebracht habe.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)