Anschrift
Frauengasse 3-5
2500 Baden
02252 / 44403

UTF8 04-02-2011

UTF-8 Kodierung

Eine Kodierung ist nichts anderes als eine Tabelle, in der jedem Zeichen eine Nummer zugeordnet wird.

Symbol
Nummer
№
ψ
ψ
☺

Am Anfang stand der ASCII (american standard code for information interchange) Code, der 128 Zeichen umfasste. Später gab es den erweiterten ASCII Code, der bereits 256 Zeichen umfasste.
Diese Code Tabellen waren aber schon bald zu klein und es musste eine neue Tabelle her. Am besten eine Tabelle in der alle Zeichen aller Sprachen Platz finden, und die am besten einheitlich ist. Man braucht nur an die russische Schrift, die japanischen Schriftzeichen oder die hebräische Schrift denken. Mit der UTF-8 Kodierung sollte das nun gelingen.
UTF-8 ist eine Unicode-Kodierung und steht für 8-bit Unicode Transformation Format. Mit UTF-8 können bis zu 4 Byte, das theoretisch maximal heißt 2.097.152 Zeichen dargestellt werden. Damit sollte jedes Schriftzeichen des Unicodestandards seinen Platz finden. Auch sollten damit die Html-Sonderzeichen wie ä ü ö oder ß der Geschichte angehören.

Das UTF-8 Schema


Mit diversen Steuerzeichen werden Daten, Start- bzw. Stop-Flags markiert. Die Größe, d.h. die Anzahl der Bytes durch die ein Symbol repräsentiert wird, wird durch die Codenummer des Symbols innerhalb der Unicodetabelle festgelegt.

 

In der folgenden Tabelle steht jedes x für die eigentliche Angabe der Codeposition. Die roten Angaben stehen für die oben erwähnten Steuerzeichen.
Byte Stream Ansprechbare Symbole
0xxx.xxxx 7 Bits = 27= 128 Zeichen
110x.xxxx  10xx.xxxx 11 Bits = 211= 2.048 Zeichen
1110.xxxx  10xx.xxxx  10xx.xxxx 16 Bits = 216= 65.536 Zeichen
1111.0xxx  10xx.xxxx  10xx.xxxx  10xx.xxxx 21 Bits = 221= 2.097.152 Zeichen

Einige Beispiele


Die Umstellung am Server


Stellt man die Kodierung direkt am Server ein, muss das beim Apache Webserver und dem Php Modul geschehen.

Apache2

[highlight=Php]# mod_mime-defaults.conf
# Damit wird in der html Seite per <meta> Tag entschieden, welche Kodierung vorliegt
AddDefaultCharset Off[/highlight] z.B. [highlight=HTML]http-equiv="Content-Type" content="text/html; charset=utf-8"
http-equiv="Content-Type" content="text/html; charset=iso-8859-1"
[/highlight]

PHP5

[highlight=Php]# php.ini
#auskommentueren, also auch hier keine Vorgaben vom Server aus
;default_charset="iso-8859-1"[/highlight]

MySQL

Die Kollation aller Tabellen auf utf8-general-ci umstellen, und bei einer Abfrage zuerst folgenden QUERY absetzen [highlight=MySQL]# direkt nach dem Verbindungsaufbau
mysql_query('SET NAMES "utf8"');[/highlight] z.B. [highlight=Php]$db = mysql_connect ($server,$user,$password);
if ($db) {
   mysql_select_db($database, $db);
   mysql_query('SET NAMES "utf8"');
   $ergebnis=mysql_query("SELECT * FROM Test ORDER BY datum DESC");
}
mysql_close($db);[/highlight]