Zeichenkodierung

Hallo!

Ich habe überhaupt keine Ahnung von Zeichenkodierung und komme langsam aber sicher völlig durcheinander. Was genau ist der Unterschied zwischen

und

?! Egal was ich benutze, immer gibt’s Probleme mit Umlauten oder mit irgendwelchen Sonderzeichen. Offenbar hängts dann ja auch noch davon ab, welche Kollation die Datenbank-Tabelle(-Spalte?) hat, je nachdem variieren die Ergebnisse dann nochmal.

Konkret arbeite ich an einem CMS System, das momentan dank meiner Ahnungslosigkeit ein völliges Chaos an durcheinandergewürfelten Codierungen hat, und das ich nun gern auf einen einheitlichen Stand bringen würde - dazu bräuchte ich die Information, welche Codierung denn nun die „beste“ oder vielleicht auch die geeignetste ist. Die verwendeten Sprachen sind deutsch und englisch.

Welche Zeichenkodierung nehme ich für die HTML Seiten her, welche Kollationen für die Datenbanken mit den Texten? Wann verwende ich utf8_decode() bzw. brauch ich das überhaupt?

Auch für Links zu entsprechenden Seiten, wo das Thema mal gut und übersichtlich erklärt wird, wär ich sehr dankbar. Die Google Suche hat mir bisher nur bedingt weitergeholfen.

Grüße und danke im Voraus,
Chi

Hallo,

Ich habe überhaupt keine Ahnung von Zeichenkodierung und komme
langsam aber sicher völlig durcheinander.

Dann lies dir mal das hier durch: http://perlgeek.de/de/artikel/charsets-unicode
Das ist zwar für Perl-Programmierer geschrieben, aber der Anfang sollte für alle Programmierer interessant sein.

(Disclaimer: ich habe obig verlinkten Artikel geschrieben)

Grüße,
Moritz

Hi

Einfache Lösung:

Alles in der selben Zeichenkodierung machen.

zum Beispiel:
Dateien die du schreibst in utf-8 abspeichern. Webseiten mit utf-8 Headern abschicken. Mysql auf utf-8 umstellen und auch in php UTF-8 benutzen.

Dann solltest du solche Probleme nicht mehr haben.

Gruß Lamer

PS: natürlich gilt das auch für alle anderen Codierungen.

Dateien die du schreibst in utf-8 abspeichern. Webseiten mit
utf-8 Headern abschicken. Mysql auf utf-8 umstellen und auch
in php UTF-8 benutzen.

Danke. Dateien, Webseiten in utf-8 - ok. Mysql… das bedeutet dann, die Tabellen ham eine Kollation von… utf8_general_ci ? Korrigier mich wenn das falsch ist, bitte. Und was heißt utf-8 in PHP benutzen?

Grundsätzlich bleibt immer noch die Frage, welche Codierung besser ist. ISO-8859-1 oder doch utf8? Ich hab die letzte Zeit eigentlich versucht, utf-8 zu benutzen, einfach weils mir von dem was ich so gelesen habe logischer erscheint. Mehr vorhandene Zeichen im Zeichensatz = mehr Zeichen die korrekt dargestellt werden, war meine Überlegung. Nun wurde mir aber nahegelegt, doch besser ISO-8859-1 zu benutzen, denn utf-8 sei „nicht so gut“, wenn schon dann überhaupt utf-16. Letzteres kenne ich ehrlich gesagt überhaupt nicht. Wenn da was dran ist, bin ich natürlich bestrebt, mich zu verbessern, aber die Zuverlässigkeit dieser Quelle kann ich selber nicht so recht beurteilen.

Kann mir dazu jemand genaueres sagen?

Hallo,

Grundsätzlich bleibt immer noch die Frage, welche Codierung
besser ist. ISO-8859-1 oder doch utf8?

„besser“ kommt immer auf den Anwendungsfall an. In meinen Webanwendungen benutze ich nur UTF-8, weil ich keine Lust habe, alle nicht-ISO-8859-1-Zeichen irgendwie zu kodieren (auf HTML-Seiten mag das ja noch ganz gut funtkionieren, aber spaetestens wenn man darin suchen will wird das sehr unpraktisch).

Ich hab die letzte Zeit
eigentlich versucht, utf-8 zu benutzen, einfach weils mir von
dem was ich so gelesen habe logischer erscheint. Mehr
vorhandene Zeichen im Zeichensatz = mehr Zeichen die korrekt
dargestellt werden, war meine Überlegung.

stimmt auch.

Nun wurde mir aber
nahegelegt, doch besser ISO-8859-1 zu benutzen, denn utf-8 sei
„nicht so gut“,

Bullshit.

wenn schon dann überhaupt utf-16.

Auch Bullshit. Windows benutzt UTF-16, aber fuer deutsche und englische Texte ist das nicht besonders effizient.
Es wurde vermutlich wegen seiner vermeindlichen Einfachkeit gewaehlt, aber letztendlich ist es genau wie UTF-8 eine Kodierung mit variabler Bytezahl pro Zeichen, und daher im Handling kein Deut einfacher als UTF-8.

Gruesse,
Moritz

Danke!

Hi

Mysql… das bedeutet dann, die Tabellen ham eine Kollation von… utf8_general_ci

Ja z.B. alle Kollationen mit utf-8 haben hier den basis utf-8 Zeichesatz. Nur sind sie um einige Sachen erweitert. Mit utf8_general_ci kannst du nichts falsch machen.

? Korrigier mich wenn das falsch ist, bitte. Und was heißt
utf-8 in PHP benutzen?

in php gibt es einige funktionen (z.B. htmlspecialchar) die den Code den du mit ihnen bearbeitest in iso umwandeln solange du ihn normal gebrauchst. Allerdings haben diese Funktionen seitz php 4.3.0 eine weitere option in der du dann das Charset festlegen kannst.
Beispiel:
htmlspecialchars(„Test“, ENT_QUOTES);
Hier wird der Code in Iso (standard einstellung) gewandelt

htmlspecialchars(„Test“, ENT_QUOTES, „UTF-8“);
Hier wird er UTF-8.

Das würde ich bei allen funktionen die deinen Sourcecode in irgendeinerweise bearbeiten mit einbauen.

Grundsätzlich bleibt immer noch die Frage, welche Codierung
besser ist. ISO-8859-1 oder doch utf8?

UTF-8 ist moderner und sollte auf jeder Webseite genutzt werden. Der Trend ist auch eindeutig da hingehend.