Utf-8

kevkev

Erfahrenes Mitglied
Hi,

Ich möchte ein Projekt in verschiedene Sprachen übersetzen lassen, auch in Japanisch/Chinesisch. Derzeit nutze ich Latin1 (ISO-8859-1) bei der Apache Konfiguration, bei der MySQL Datenbank, beim Editor, beim Header, etc. und möchte das gerne umstellen auf utf-8.
Das stellt ansich kein Problem dar, nur ein Punkt bereitet mir noch Kopfschmerzen:
Umwandlung von _nicht_ UTF-8 Zeichensätze in UTF-8.

Folgendes Beispiel:
Apache, PHP, MySQL, Header, XML-Anweisung und <Meta> Anweisung stellen sicher, dass das Dokument mit UTF-8 ausgeliefert wird. Das Script ist als UTF-8 Codiert gespeichert worden und alles wird richtig ausgegeben.

Was passiert aber nun, wenn ein älterer Browser - der nicht utf-8 kann - über ein Formular Daten an ein Script sendet, das die empfangene Daten in die Datenbank speichert?

Nun die Frage:
- Werden die Daten in UTF-8 umgewandelt?
- Wie erkenne ich einen _nicht_ utf-8 String?
- Wie kann ich nun diesen _nicht_ utf-8 String von allen Möglichen Zeichensätzen in UTF-8 umwandeln?

Allgemein habe ich noch Probleme mit User generiertem Content. Ich möchte in der Datenbank wirklich nur UTF-8 drinstehen haben, damit ich mich bei der Ausgabe über Konvertierung keine Gedanken mehr machen muss.

Ich hoffe, ihr könnt mir dabei helfen.

Gruß
Kevin
 
Die UTF-8-Kodierung ist glücklicherweise leicht zu identifizieren, da einige Oktette im UTF-8-Kode gar nicht existieren. Kommen diese jedoch in der zu prüfenden Zeichenkette vor, handelt es sich nicht um eine UTF-8-kodierte Zeichenkette. In den Kommentaren der utf8_encode()-Referenzseite befindet sich die Beschreibung einer isUTF8()-Funktion, mit der diese Eigenschaft geprüft werden kann.

Ist die zu prüfende Zeichenkette allerdings nicht UTF-8-kodiert, ist das Herausfinden der tatsächliche Zeichenkodierung und des tatsächlichen den Zeichensatz allerdings etwas schwieriger.
 
Danke für die isUtf8 Funktion.
Aber gibt es wirklich Browser die kein utf8 können? Habe das auch nur mal wo gelesen...
Falls nicht, hat sich das Thema mit Konvertierung etc. soeben erledigt :).
 
Zurück