PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Zeichensätzen in Verbindung mit System und MySQL



AndreasMeier
06.01.08, 13:16
Hallo zusammen,

ich versuch gerade von einem MySQL4-Server auf einen 5er umzusatteln und jetzt hab ich erwartetermaßen Probleme mit dem Zeichensatz.
Ich bekomme die Umlaute auf dem neuen System nicht angezeigt (schwarze Raute mit weißem Fragezeichen).

Es gibt einiges zum Thema Charset und MySQL zu lesen, ich hab aber noch andere Fragen:

Erste Frage, die ich zu Zeichensätzen habe :
Welcher Zeichensatz ist der bessere, da "globalisierter" bzw. zukunftssicherer, UTF8 oder ISO-8859-1.
Ich nehme an, dass das UTF8 sein dürfte.

Die Daten in der Datenbank werden von PHP-Dateien genutzt, die ihrerseits mit einem:
@setlocale(LC_TIME, 'de_DE.ISO_8859-1'); => für deutsche Dateien
@setlocale(LC_TIME, 'en_US.ISO_8859-1'); => für englische Dateien
gefüttert sind.

Ich möchte für eine Erweiterung der Sprachen mit den Seiten flexibel sein, d.h. es können irgendwann mal z.B. französische Seiten dazukommen, wo es ja mit den ganzen Akzenten jede Menge lokaler Besonderheiten gibt.

Der 5er-MySQL-Server läuft unter "UTF-8 Unicode (utf8)".

Daher die zweite Frage:
macht es Sinn, alle Dateien und die DB auf UTF8 umzustellen (sofern meine Annahme mit UTF8 von oben stimmt) ?

Und dann die dritte Frage:
Wenn ich alle PHP-Dateien umstelle, muss ich im Apache auch was umstellen ?

Die vierte Frage wäre:
Was muss ich beim Import der DB beachten hinsichtlich Zeichensatz und Sortierung.

Und die fünfte und letzte Frage:
Gibt es einen einfacheren Weg ?

Danke und Gruß
Andreas

Iggi
06.01.08, 18:53
Hallo Andreas,

mit MySQL habe ich schon lange nichts mehr gemacht, deswegen überspringe ich die entsprechenden Fragen mal :-)


Welcher Zeichensatz ist der bessere, da "globalisierter" bzw. zukunftssicherer, UTF8 oder ISO-8859-1.

Ganz klar UTF-8. ISO-8859-1 deckt ausschließlich westeuropäische Sprachen (und das noch nicht einmal vollständig) ab. Für alle anderen Sprachen müßte dann wieder ein anderer ISO-8859-Zeichensatz genommen werden. UTF-8 dagegen unterstützt praktisch alle Sprachen. Zukunftssicher bezüglich Softwareunterstützung sind sicher beide, auch wenn die meisten Produkte/Programmiersprachen wohl in Zukunft bevorzugt UTF-8 verwenden werden.


@setlocale(LC_TIME, 'de_DE.ISO_8859-1'); => für deutsche Dateien
@setlocale(LC_TIME, 'en_US.ISO_8859-1'); => für englische Dateien

Die mit setlocale gemachten Angaben wirken sich meines Wissens nach nicht auf das Einlesen und Ausgeben von Strings aus. Dafür ist die Funktion iconv da.


macht es Sinn, alle Dateien und die DB auf UTF8 umzustellen (sofern meine Annahme mit UTF8 von oben stimmt) ?

Vermutlich ja.


Wenn ich alle PHP-Dateien umstelle, muss ich im Apache auch was umstellen ?


Nein.