Sprachkompatibilität mit UTF-8

wenn man es sauber implementiert sollte es nicht notwendig sein utf8-en/decode zu verwenden da das auch nicht unabhängig macht....
 
@einfach nur crack
Hab das gerade getestet. Habe MySQL-Daten nicht UTF-kodiert aus einer Tabelle geholt und mittels PHP ausgegeben. Umlaute, Sonderzeichen etc. werden korrekt ausgegeben.
 
an qsrs: Eigenartig. Ich hatte immer Probleme, wenn ich der MySQL-Verbindung nicht gesagt habe, dass die Daten als UTF8 übergeben werden sollen.
 
@einfach nur crack
Habe gerade an einem anderen Beispiel gemerkt, dass du Recht hast. Wahrscheinlich war es nur Zufall, dass es beim ersten Mal funktioniert hatte. Danach habe ich mich durch diverse Beiträge gelesen, wie ich auch die MySQL-Einträge auf UTF-8 umstelle. Da es um ein bestehendes Projekt geht, schätze ich den Aufwand nicht gering ein.

Kannst du mir eine kurze Übersicht geben, wie du das machst bzw. auf was es ankommt? Im Moment weiß ich es nur ungefähr:

- MySQL-Verbindung mit mysql_query("SET NAMES 'utf8'");
- Felder müssen (?) alle in UTF-8 kodiert werden (werden Inhalte beim Umstellen automatisch umkodiert?
- Die Daten müssen mit PHP alle per utf8_encode() und utf8_decode() geschrieben/gelesen werden?

Der Auwand ist so hoch, dass ich mir überlege bei ISO zu bleiben.
 
Das ist recht einfach: direkt nach dem Aufbau der Verbindung zur MySQL-Datenbank SET NAMES 'utf8' senden und schon geht das. Ansonsten kann man noch für alle Felder der Tabellen die Kodierung auf UTF8 setzen. Mehr ist es nicht.
 
Also das scheint alles doch nicht ganz so trivial zu sein. Ich habe an manchen Ausgaben die Anzeige mittels mysql_query("SET NAMES 'utf8'"); korrekt bekommen, an anderen Stellen wird mir z.B. statt äüöß dann äüöß angezeigt, wenn ich mysql_query("SET NAMES 'utf8'"); nach der Verbindung verwende. Lasse ich das weg, ist die Ausgabe korrekt. Wo also angeben, und wo nicht? Das Umstellen der Felder in der DB auf utf-8, hat nichts gebracht. Ich habe gelesen, dass auch in den Formularen utf-8 verwendet werden sollte. Also der Aufwand ist, wenn man alles berücksichtigt, imens.
 
ja einfach ist es nicht.....
Ich würde dir empfehlen mit einer leeren Datenbank anzufangen.
Denn wenn schon Daten drin sind kannst du dir m.E. nicht sicher sein ob es jetzt korrekt in utf-8 kodiert ist.
Fang mit einer leeren Datenbank an und wenn alles wie gewünscht passt kümmere dich um das wiedereinpflegen der Daten.

Meine Datenbanken laufen standardmäßig mit UTF8 als Kodierung und ich hatte bisher nie ein Problem damit.
Ja nur hier handelt es sich um ein Problem bei der Umstellung der Daten und genau da kommen die Probleme auf.
Wenn man von Anfang an einen Server hat bei dem utf-8 konsequent eingesetzt wird kennt man derartige Probleme nicht. :)
 
Zuletzt bearbeitet:
Da_Chris hat es richtig erkannt, es geht um ein bestehendes System, deshalb wohl jetzt auch die Schwierigkeiten.

Also bei einem neuen Projekt wäre dann auf Folgendes zu achten: (?)
- DB-Felder mit UTF-8
- Verbindungen mit mysql_query("SET NAMES 'utf8'");
- evtl. Formulare mit UTF-8 kodieren, oder nicht notwendig?
- utf8_encode() und utf8_decode() noch notwendig?

Ich würde dir empfehlen mit einer leeren Datenbank anzufangen.

Neue Datenbank heißt im Prinzip nichts anderes, als alle Tabellen-Felder entsprechend mit UTF-8 anzulegen, richtig? Was verwendet ihr hier? utf8_general_ci oder utf8_unicode_ci? Habe auch in manchen Systemen schon utf8_bin gesehen. Im Deutschen und Französischen funktioniert utf8_unicode_ci wohl mit der Sortierung gut, aber es soll ja mehrsprachig sein und hier hat keine Sprache Vorrang, alle sind gleichwertig zu behandeln.
 
Nun nicht unbedingt wenn der server entsprechend eingerichtet ist reicht ein eintrag im metatag des html um den client browser auf utf8 hinzuweisen.
Vorraussetzung ist Apache in einer aktuellen Version und eine Datenbank die utf8 kodiert ist.
Für dein Problem kann man als Workaround wenn du das Projekt nicht komplett aufsetzen willst utf8_en/decode einsetzen damit sollte es hinhauen.
 
Zurück