List:German« Previous MessageNext Message »
From:Susanne Ebrecht Date:March 30 2009 10:34am
Subject:Re: Deutsche Umlaute und UTF8
View as plain text  
Hallo,

ein paar Korrekturen gibt es hier von mir:
Unter Windows in der CLI ist stets CP850 einzustellen.

Da der Text via Email zuviel wurde, habe ich über das ganze Thema mit 
anschaulichen Beispielen und tieferen Erläuterungen mal geblogt:

http://www.miracee.org/2009/03/30/encoding-handling-mysql-cli-5858398/

Der Link zu den Folien aus meinem University Vortrag ist ebenfalls am 
Ende des Blogs zu finde.

Susanne


f4ckm5@stripped schrieb:
> # ----------------
> # Problem:
> # ----------------
>
> Wenn man die MySQL Konsole über die Eingabeaufforderung (cmd.exe) von 
> Windows aufruft und deutsche Umlaute per INSERT oder UPDATE in 
> Tabellen einfügt, so werden diese bei Abruf über die MySQL Konsole 
> zwar korrekt ausgegeben , aber beim Zugriff mit anderen 
> Datenbank-Clients (z.B. Ausgabe per PHP in eine Webseite) erscheinen 
> statt der Umlaut andere Sonderzeichen statt einem "Ü" z.B. "š".
>
> # ----------------
> # Ursache:
> # ----------------
>
> Die Standardeinstellung für den Zeichensatz auf der Clientseite (MySQL 
> Konsole) und auf der Serverseite ist unter Windows bei einer 
> Standardinstallation des MySQL Servers "latin1". Die aktuellen werte 
> einer Clientverbindung lassen sich mit "show variables like 'char%';" 
> abfragen. Das Ergebnis ähnelt i.d.R. diesem:
>
> mysql> show variables like 'char%';
> +--------------------------+-----------------------------------------------------+ 
>
> | Variable_name            | Value          |
> +--------------------------+-----------------------------------------------------+ 
>
> | character_set_client     | latin1          |
> | character_set_connection | latin1          |
> | character_set_database   | latin1          |
> | character_set_filesystem | binary          |
> | character_set_results    | latin1          |
> | character_set_server     | latin1          |
> | character_set_system     | utf8          |
> | character_sets_dir       | C:\Programme\MySQL\MySQL Server 
> 5.1\share\charsets\ |
> +--------------------------+-----------------------------------------------------+ 
>
> 8 rows in set (0.00 sec)
>
> Der MySQL Zeichensatz "latin1" entspricht im Grobem dem Zeichensatz 
> Windows-1252 bzw. ISO/IEC 8859-1.
> Windows verwendet aber für die Eingabeaufforderung (cmd.exe) 
> standardmäßig nicht die Codepage Windows-1252, sondern MS-DOS 850. 
> Drücke ich mit CodePage 850 das "Ü", so wird dieses vom Zahlenwert her 
> als (dec)154 interpretiert und auf der Konsole auch als "Ü" angezeigt. 
> MySQL speichert dieses "Ü" dann als ein Byte mit dem Wert (dec)154 in 
> der Datenbank. Übersetzt nach Windows-1252 bzw. latin1 bedeutet 
> (dec)154 aber "š". Wenn ich umgekehrt z.B. von einem PHP Formular aus 
> ein "ü" eingebe, so wird dies als (dec)252 in der Datenbank 
> gespeichert, bedeutet aber in der Zeichentabelle MS-DOS 850 "³". D.h. 
> die Umlaute, die ich über einen Client eingebe, sind bei Abruf über 
> den selben Weg immer korrekt, aber bei Abruf über den anderen immer 
> falsch.
>
> # ----------------
> # Lösung:
> # ----------------
>
> Über den Befehl "chcp" (kurz für Change Codepage) kann man die 
> Codepage für die Kommandozeile ändern. Ein einfaches "chcp 1252" 
> schaltet die cmd.exe auf Windows-1252 bzw. latin1 um. Tippe ich jetzt 
> ein "ü" erscheint bei Verwendung der Rasterschrift für das 
> Konsolenfenster ein "³". Man kann die Schriftart für das 
> Konsolenfenster aber auf "Lucida Console" umstellen, die auch 
> Windows-1252 beherrscht, und erhält dann wieder ein "ü" angezeigt. 
> Rufe ich danach die MySQL Konsole auf, werden die eingegebenen Umlaute 
> von der Eingabeaufforderung als die Zahlenwerte an MySQL 
> weitergereicht, die im Rahmen der Clienteinstellung latin1 erwartet 
> werden.
> Man kann sich auch eine Verknüpfung bauen, die die Codepage vor dem 
> Aufruf der MySQL Konsole automatisch umschaltet. Deren Ziel sähe dann 
> in etwa so aus:
>
> C:\WINDOWS\system32\cmd.exe /c chcp 1252 && "C:\Programme\MySQL\MySQL 
> Server 5.1\bin\mysql.exe" -uuser -ppasswort
>
> Mit freundlichen Grüßen
>
> Jürgen Schmitts
>


-- 
Sun Microsystems GmbH 
Dipl.-Inf. Susanne Ebrecht, Support Engineer
52066 Aachen, Germany

http://www.sun.com

Registered Office: Sonnenallee 1, D-85551 Kirchheim-Heimstetten
Commercial register of the Local Court of Munich: HRB 161028
Managing Directors: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer
Chairman of the Supervisory Board: Martin Haering

Thread
Re: Deutsche Umlaute und UTF8f4ckm528 Mar
  • Re: Deutsche Umlaute und UTF8Susanne Ebrecht30 Mar
    • Re: Deutsche Umlaute und UTF8f4ckm530 Mar
      • Re: Deutsche Umlaute und UTF8Susanne Ebrecht31 Mar
        • Re: Deutsche Umlaute und UTF8f4ckm51 Apr