Tag-Archive for » Unicode «

Die neue Major Version Unicode 6.0.0

Die neue Version Unicode 6 bringt uns fast 2000 neue Zeichen. Dazu gehören zum Beispiel die vertikal orientierten japanischen Emoticons wie “GRINNING FACE WITH SMILING EYES” (1F601) oder “FACE WITH TEARS OF JOY” (1F602).

Drei neue Schriftsysteme (Mandäisch, Batak und Brahmi) sind dazugekommen, ungefähr 600 Zeichen für afrikanische Sprachen und ein Symbol für die indische Rupie. Für Ersteller von Webseiten können auch die neuen Symbole aus dem Transportbereich interessant sein. Unter anderem gibt es dort Schiffe, Flugzeuge, Straßenbahnen, Autos, Fahrräder und diverse Symbole aus dem Umfeld der Verkehrsmittel. Die Transport-Symbole starten bei 1F680.

Wer Unicode mit PHP ausgeben möchte, muss sich ein wenig damit auskennen, damit auch wirklich die gewünschten Zeichen auf den Bildschirm kommen. Wenn man es aber einmal beherrscht, und zwar von der Datenbank bis zum Seitenheader, lösen sich alle Probleme der Vergangenheit mit 8-Bit-Zeichensätzen in Luft auf.

MySQL-Datenbank auf Zeichensatz UTF8 umstellen

Wenn man sich entschieden hat, seine Datenbank auf den Unicode-Zeichensatz UTF-8 umzustellen, muss man zunächst schauen, um welche Version von MySQL es sich handelt.

Ab Version 5.0 ist es kein großes Problem, die einzelnen Tabellen in den Zeichensatz UTF-8 umzuwandeln. Man muss sich aber noch Gedanken um die Sortierung machen. Die Sortierung utf8-general-ci ist schneller, aber sortiert die Sonderzeichen nicht ganz präzise nach dem Duden. Die Sortierung utf8_unicode_ci ist exakter, aber leider auch langsamer. Das ci steht bei der Sortierung übrigens für case insensitive und bedeutet, dass Gross- und Kleinschreibung nicht unterschieden werden.

Den Umwandlungsbefehl kann man in der MySQL-Konsole oder in phpMyAdmin eingeben:

ALTER TABLE Tabellenname CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci

Das muss natürlich mit jeder Tabelle der Datenbank gemacht werden. Man kann darüber hinaus auch sicher stellen, dass neu angelegte Tabellen direkt diesen neuen Unicode-Zeichensatz zugeordnet bekommen, indem man den entsprechenden Wert der Voreinstellung für diese Datenbank ändert:

ALTER DATABASE Datenbankname DEFAULT CHARACTER SET  utf8 COLLATE utf8_general_ci

Damit ist die Umstellung der Datenbank auf den Zeichensatz UTF-8 abgeschlossen.

Der Unicode-Zeichensatz UTF8 in Datenbanken und Internetseiten

Das Internet kann von jedem Ort in der Welt benutzt werden. Wenn dabei die Inhalte aus einer Datenbank kommen, kann schnell mal aus „Mit freundlichen Grüßen“  die kryptische Formulierung „Mit freundlichen GrÃ?Ã?en“ werden. Der Grund liegt im verwendeten Zeichensatz.

Ein Zeichensatz legt fest, welches Zeichen durch einen bestimmten binären Code angezeigt wird. Mit den 8-Bit-Codes können maximal 256 Zeichen unterschieden werden. Ein anderer Zeichensatz führt dazu, dass die gleichen 8 Bits dann ein anderes Zeichen darstellen, das können auch nicht darstellbare Steuerzeichen sein.

Wenn die Datenbank Ihrer Internetanwendung zum Beispiel für den in Deutschland häufig verwendeten westeuropäischen Zeichensatz ISO 8859-1 eingerichtet ist (auch als Latin-1 bezeichnet) und Sie Ihre Lösung auch in Griechisch anbieten möchten, haben Sie ein Problem, denn der ISO 8859-1-Zeichensatz unterstützt das griechische Alphabet nicht.

Hier hilft dann der  der Unicode-Zeichensatz UTF-8, mit dem man seine Internetseiten, Programme und Daten bei neuen Anwendungen immer versehen sollte, denn damit kann man alle Sprachzeichen abbilden. Das ist möglich, weil bei UTF-8 jedem Unicode-Zeichen eine ganze Bytekette von variabler Länge bis maximal vier Bytes (also 32 Bit)zugeordnet werden kann.

Bei Internetseiten wird der Unicode-Zeichensatz mit folgendem Meta-Tag festgelegt:

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ >

Es kann aber passieren, dass ein Server trotz dieses Tags in den HTML-Seiten weiterhin zum Beispiel den westeuropäischen Zeichensatz ISO-8859-1 ausliefert. Bei einem Apache Webserver ist das meist durch einen Eintrag wie

AddType “text/html; charset=ISO-8859-1″ html

in der Konfigurationsdatei http.conf des Internetservers verursacht. Wenn Sie diesen Eintrag in

AddType “text/html; charset=UTF-8″ html

abändern und Apache neu starten, werden die Seiten mit dem Unicode-Zeichensatz UTF-8 ausgeliefert.