pearl.de Bestseller NEU Beratungsvideo Schnäppchen Ausgezeichnet bewertet Pressestimmen Günstig beiwww.pearl.de onlne einkaufen
Internet Magazin


27. April 2009
Buchstabensalat: Codierungsprobleme in MySQL beheben Bild vergrößern 266 103 http://img2.magnus.de/Codierungsprobleme-in-MySQL-beheben-r266x103-C-aed036ea-7213451.jpg
Buchstabensalat

Codierungsprobleme in MySQL beheben

Wenn Umlaute in MySQL verrücktspielen, liegt die Ursache oft in der Zeichencodierung. Der Workshop zeigt, wie Sie die Sache schnell in Ordnung bringen.

Buchstabensalat

Nach einem Umzug auf einen anderen Server oder Wechsel des Hosters haben Sie falsch angezeigte Umlaute auf Ihrer Webseite? Oder Sie haben eine Sicherungskopie Ihrer Datenbank eingespielt und das Fehlverhalten zeigte sich sofort im Anschluss? Ein Grund dafür kann ein falsch gespeicherter Datenbestand in Ihrer My-SQL-Datenbank sein.

Die Analyse

Da es bei dieser Thematik eine recht lange Liste von möglichen Fehlerquellen gibt, muss zunächst verifiziert werden, ob die Datenbank überhaupt Verursacher des Problems ist. Überprüfen Sie deshalb, ob Umlaute nur bei Texten, die tatsächlich in der Datenbank abgelegt sind, falsch dargestellt werden.

Werden beispielsweise zusätzlich auch Texte aus Template-Dateien, aus RSS-Feeds stammender Content oder Statustexte und Meldungen, die in Sprachdateien abgelegt sind, ebenso falsch dargestellt, dann liegt der Verdacht nahe, dass die Ursache hierfür nicht in der Datenbank, sondern zum Beispiel in fehlerhaften Headern der Webseite zu suchen ist.

Wenn Sie sich nicht sicher sind, welche Texte in einer MySQL-Tabelle gespeichert sind, so schauen Sie sich die Inhalte der Tabellen einfach mit einem geeigneten Programm an, beispielsweise MySQL Dumper.

MySQL Dumper stellt sicher, dass die lange Reihe von möglichen Fehlerquellen in diesem Skript in jedem Fall korrekt abgearbeitet wird. Das Tool arbeitet dabei vollständig mit dem Zeichensatz Unicode (UTF-8).

Sowohl die Ausgabe der Daten im Browser als auch der Prozess der Datenübermittlung vom MySQL-Server an den PHP-Interpreter wird durchgängig durch das Skript kontrolliert und schließt so alle Lücken, die eine fehlerhafte Interpretation von Zeichen erlauben würde.

Öffnen Sie den SQLBrowser des Dumpers, wählen eine Tabelle, in der Sie Texte vermuten, und lassen Sie sich die ersten Datensätze anzeigen. Wenn die Umlaute, die auf der eigentlichen Webseite falsch, hier korrekt angezeigt werden, dann liegt der Fehler nicht an falschen Daten in der Datenbank. Der Fehler ist dann außerhalb des MySQL-Servers zu suchen.

Bestätigt sich der Verdacht, so besteht Handlungsbedarf und die Daten sollten korrigiert werden. Doch wie kommt es zu einem solch unangenehmen Ergebnis?

Ansichtssache

PHP bietet in den jetzigen Versionen keinerlei Kontrolle über die Zeichensatzkodierung einer Datei. Öffnet man eine Datei, in der Zeichenketten – also Texte – enthalten sind, dann kann PHP nicht ermitteln, mit welchem Zeichensatz die Datei abgespeichert wurde.

Die Daten werden stur binär nach ANSI-Code-Tabelle eingelesen, verarbeitet und letztlich unverändert an den Browser oder die Datenbank weitergegeben.

Ein kleines Praxisbeispiel veranschaulicht recht deutlich, was hier geschieht und welche Fehler dadurch verursacht werden.

Zunächst benötigen Sie einen Text-Editor, der sicher mit verschiedenen Codierungen umgehen kann. Laden Sie sich dazu den Editor Notepad++ herunter und installieren ihn. Erstellen Sie ein neues Dokument und geben Sie folgende Zeilen ein:

Codebeispiel:

<?php
header('content-type: text/html;
charset= ISO-8859-1');
echo 'Susi Müller würfelt.';
?>

Wählen Sie nun Format/ANSI und speichern Sie die Datei unter dem Namen test.php im Rootverzeichnis Ihres lokalen Servers. Rufen Sie die Datei in Ihrem Browser mittels http://localhost/test.php auf.

Wie Sie erkennen können, werden die Umlaute korrekt dargestellt. Die zweite Zeile kündigt dem Browser an, dass die Zeichencodierung der folgenden Webseite nach ISO 8859-1-Standard (was auch latin1 entspricht) erfolgt ist.

Tatsächlich erfolgt die anschließende Ausgabe der Umlaute in der dritten Zeile nach dieser Vereinbarung, da die Datei selbst in ANSI-Codierung abgespeichert wurde. Damit liegen die Zeichen in einem 1-Byte-kodierten Zeichensatz vor.

Wählen Sie nun Format/Konvertiere zu UTF-8 ohne BOM, speichern Sie die Datei und rufen Sie sie erneut im Browser auf. Sie sehen die Ausgabe:

Susi Müller würfelt.

Obwohl die Anzeige im Texteditor nach wie vor richtig ist, führt die Ausgabe im Browser augenscheinlich zu Fehlern. Was läuft hier verkehrt? Durch die Konvertierung der Datei zu Unicode im Speicherformat UTF-8 hat sich die Dateistruktur geändert.

Unter der vorherigen 1-Byte-Codierung entsprach jedes auszugebende Zeichen genau einem Byte, also einer Zahl zwischen 0 und 255. Unicode vereint aber über 100.000 Zeichen in einem Zeichensatz, sodass man mit der Repräsentation eines Zeichens durch 1 Byte nicht mehr auskommt.



Inhaltsverzeichnis


Verwandte Themen

Günstig bei www.pearl.de online einkaufen
Meistgelesen
1. Kino-Kritik: Kill Me Please

Als Suizidwillige mit dem Tod konfrontiert werden, sinnen sie plötzlich nicht mehr auf das Ableben.

2. DECT-Telefon Peaq PDO250 im Test

Mit dem DECT-Telefon Peaq PDP250 schickt die Media-Saturn-Holding das erste Schnurlostelefon Marke Eigenbau ins Rennen. Im Test überzeugt das Peaq PDP250…

3. Kino-Kritik: Marley

So ausführlich wie oberflächlich präsentiert sich "Marley", die 144 Minuten lange Dokumentation über Reggae und Rastafari.

4. Adobe Photoshop Lightroom 4 im Test

Sie haben hunderte von Hochzeitsfotos geschossen und wollen die 50 besten davon zu einem Fotobuch zusammenstellen? Und das alles im Handumdrehen? Genau…


Kleines Spiel für zwischendurch

Bildergalerien
Samsung NV24 HD Praxistest: Nokia 6230i Sport-Gadgets - ISPO 2008 Namu6 2.4

Bilder-Suche

Top 5 Downloads
1
Recuva

Version: 1.42.544
Lizenz: Freeware
Betriebssystem: Windows

2
Win7codecs

Version: 3.6.2
Lizenz: Freeware
Betriebssystem: Windows

3
OnlineTV

Version: 6.2.0.2
Lizenz: Freeware
Betriebssystem: Windows

4
CCleaner

Version: 3.18.1707
Lizenz: Freeware
Betriebssystem: Windows

5
Firefox

Version: 13.0 Beta 3
Lizenz: Open Source
Betriebssystem: WindowsLinuxMac

Download-Suche