Re: Umlaute auf Konsole

Re: Umlaute auf Konsole

am 19.12.2005 16:49:59 von Christian Kirsch

Achim Grohn schrieb:
> Hallo,
>
> mit PHPMyAdmin werden im Browser alle Umlaute von Inhalten der Datenbank
> richtig dargestellt. Greife ich hingegen mit der Konsole auf den
> MySQL-Server zu, werden die Umlaute durch andere Zeichen ersetzt. Damit
> habe ich dann auch falsche Dumps. An welcher Einstellung am Webserver
> kann das liegen?
>

Nein. Du hast *nicht* die flaschen Dumps. Warum auch? Du *siehst* nur
etwas flasches. Was vermutlich daran liegt, dass Deine Konsole nicht
auf UTF-8 eingestellt ist, während Dein Webserver die Seiten mit dem
richtigen Encoding liefert. Oder umgekehrt.

Angesichts deiner sparsamen (besser gesagt: untauglichen)
Fehlerbeschreibung ist das allerdings nur eine wilde Vermutung.

Wenn Du wirklich eine Erklärung haben willst, dann
- beschreibe bitte *klar* was Du tust, am besten durch Cut&Paste der
relevanten Kommandos
- auf welchem OS und mit welcher MySQL-Version Du arbeitest
- wie die relevanten Einstellungen sind (locale, charset-Setzungen für
Server, Connection, Tabelle)
- Beschreibe *klar*, was Du siehst ('Andere Zeichen' kann irgendwas sein)

Kurz: Gib Dir das Mindestmaß an Mühe, das es anderen ermöglicht, Dir
zu helfen.

Umlaute auf Konsole

am 19.12.2005 17:51:28 von Achim Grohn

Hallo,

mit PHPMyAdmin werden im Browser alle Umlaute von Inhalten der Datenbank
richtig dargestellt. Greife ich hingegen mit der Konsole auf den
MySQL-Server zu, werden die Umlaute durch andere Zeichen ersetzt. Damit
habe ich dann auch falsche Dumps. An welcher Einstellung am Webserver
kann das liegen?

Achim

Re: Umlaute auf Konsole

am 19.12.2005 19:00:58 von Achim Grohn

Christian Kirsch wrote:
> Achim Grohn schrieb:
>
>>Hallo,
>>
>>mit PHPMyAdmin werden im Browser alle Umlaute von Inhalten der Datenbank
>>richtig dargestellt. Greife ich hingegen mit der Konsole auf den
>>MySQL-Server zu, werden die Umlaute durch andere Zeichen ersetzt. Damit
>>habe ich dann auch falsche Dumps. An welcher Einstellung am Webserver
>>kann das liegen?
>>
>...
> - auf welchem OS und mit welcher MySQL-Version Du arbeitest
auf dem Debian-Webserver läuft MySQL-Version 4.0.24_Debian-10

> - wie die relevanten Einstellungen sind (locale, charset-Setzungen für
> Server, Connection, Tabelle)
Webserver:
$locale
LANG=en_US
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=

->httpd.conf
AddCharset Big5 .Big5 .big5
AddCharset WINDOWS-1251 .cp-1251
AddCharset CP866 .cp866
AddCharset ISO-8859-5 .iso-ru
AddCharset KOI8-R .koi8-r
AddCharset UCS-2 .ucs2
AddCharset UCS-4 .ucs4
AddCharset UTF-8 .utf8

LanguagePriority en da nl et fr de el it ...

Lokaler Rechner:
$locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

> - Beschreibe *klar*, was Du siehst ('Andere Zeichen' kann irgendwas sein)
auf dem Webserver und dem lokalen Rechner erscheint das Work "Getränke" so:
$cat dump.sql
Getr,ke

Bisher habe ich noch keine Einstellungen verändert und rumprobiert.

Achim

Re: Umlaute auf Konsole

am 19.12.2005 19:08:57 von Christian Kirsch

Achim Grohn wrote:
>
>>- Beschreibe *klar*, was Du siehst ('Andere Zeichen' kann irgendwas sein)
>
> auf dem Webserver und dem lokalen Rechner erscheint das Work "Getränke" so:
> $cat dump.sql
> Getr,ke
>

Wirklich? Aus "än" wird ein ","?

Schau Dir mal die Ausgabe von
od -c dump.sql | more
an. Wie sieht das aus - auch ein "," oder was anderes?

Re: Umlaute auf Konsole

am 19.12.2005 19:55:41 von Christian Kirsch

Achim Grohn wrote:
> Christian Kirsch wrote:
>
>>Achim Grohn wrote:
>>
>>
>>>>- Beschreibe *klar*, was Du siehst ('Andere Zeichen' kann irgendwas sein)
>>>
>>>auf dem Webserver und dem lokalen Rechner erscheint das Work "Getränke" so:
>>>$cat dump.sql
>>>Getr,ke
>>>
>>
>>
>>Wirklich? Aus "än" wird ein ","?
>>
>>Schau Dir mal die Ausgabe von
>> od -c dump.sql | more
>>an. Wie sieht das aus - auch ein "," oder was anderes?
>>
>>
>
>
> so jetzt beide Versionen direkt mit Copy&Paste:
>
> $od -c dump.sql | more
> G e t r � n k e
>

Ok, dann war -c nicht so pfiffig. letztlich musst Du rausbekommen, was
in der Datei an dieser Position wirklich steht. od ist dafür geeignet,
wahlweise auch der (X)Emacs im hexl-Mode.

Meine vorsichtige Erklärung: Deine Konsole erwartet UTF8, also *zwei*
Zeichen für einen Umlaut (und nur bestimmte Zeichen mit gesetztem 8. Bit
sind erlaubt). Sie bekommt nun 'än' in ISO8859-1-Kodierung. Ein solches
'ä' ist kein legaler UTF8-Code, folglich kann sie aus der Sequenz
'än' kein brauchbares Unicode-Zeichen machen. Also bekommst Du ein ?
stattdessen. Sicher kann man das aber erst sagen, wenn man zuverlässig
die Codes der Zeichen in dump.sql kennt.

MySQL dumpt nach meinem Wissen keine ? statt 'än'.

Re: Umlaute auf Konsole

am 19.12.2005 20:53:06 von Achim Grohn

Christian Kirsch wrote:
> Achim Grohn wrote:
>
>>>- Beschreibe *klar*, was Du siehst ('Andere Zeichen' kann irgendwas sein)
>>
>>auf dem Webserver und dem lokalen Rechner erscheint das Work "Getränke" so:
>>$cat dump.sql
>>Getr,ke
>>
>
>
> Wirklich? Aus "än" wird ein ","?
>
> Schau Dir mal die Ausgabe von
> od -c dump.sql | more
> an. Wie sieht das aus - auch ein "," oder was anderes?
>
>

so jetzt beide Versionen direkt mit Copy&Paste:

$od -c dump.sql | more
G e t r � n k e


$cat dump.sql
Getr�ke


Achim

Re: Umlaute auf Konsole

am 19.12.2005 21:23:58 von Achim Grohn

Christian Kirsch wrote:
> Achim Grohn wrote:
>
>>Christian Kirsch wrote:
>>
>>
>>>Achim Grohn wrote:
>>>
>>>
>>>
>>>>>- Beschreibe *klar*, was Du siehst ('Andere Zeichen' kann irgendwas sein)
>>>>
>>>>auf dem Webserver und dem lokalen Rechner erscheint das Work "Getränke" so:
>>>>$cat dump.sql
>>>>Getr,ke
>>>>
>>>
>>>
>>>Wirklich? Aus "än" wird ein ","?
>>>
>>>Schau Dir mal die Ausgabe von
>>> od -c dump.sql | more
>>>an. Wie sieht das aus - auch ein "," oder was anderes?
>>>
>>>
>>
>>
>>so jetzt beide Versionen direkt mit Copy&Paste:
>>
>>$od -c dump.sql | more
>>G e t r � n k e
>>
>
>
> Ok, dann war -c nicht so pfiffig. letztlich musst Du rausbekommen, was
> in der Datei an dieser Position wirklich steht. od ist dafür geeignet,
> wahlweise auch der (X)Emacs im hexl-Mode.
>
> Meine vorsichtige Erklärung: Deine Konsole erwartet UTF8, also *zwei*
> Zeichen für einen Umlaut (und nur bestimmte Zeichen mit gesetztem 8. Bit
> sind erlaubt). Sie bekommt nun 'än' in ISO8859-1-Kodierung. Ein solches
> 'ä' ist kein legaler UTF8-Code, folglich kann sie aus der Sequenz
> 'än' kein brauchbares Unicode-Zeichen machen. Also bekommst Du ein ?
> stattdessen. Sicher kann man das aber erst sagen, wenn man zuverlässig
> die Codes der Zeichen in dump.sql kennt.
>
> MySQL dumpt nach meinem Wissen keine ? statt 'än'.

ich gebe zu, diese Zeichencodes sind nicht mein Metier, deine Erklärung
ist aber nachvollziehbar. Entscheidend ist, dass sich der dump wieder
sauber einspielen lässt und das habe ich eben ausprobiert :)

Danke für die Hilfe, Achim

Re: Umlaute auf Konsole

am 20.12.2005 09:40:00 von Axel Schwenke

Christian Kirsch wrote:

> Meine vorsichtige Erklärung: Deine Konsole erwartet UTF8, also *zwei*
> Zeichen für einen Umlaut (und nur bestimmte Zeichen mit gesetztem 8. Bit
> sind erlaubt). Sie bekommt nun 'än' in ISO8859-1-Kodierung. Ein solches
> 'ä' ist kein legaler UTF8-Code, folglich kann sie aus der Sequenz
> 'än' kein brauchbares Unicode-Zeichen machen. Also bekommst Du ein ?
> stattdessen. Sicher kann man das aber erst sagen, wenn man zuverlässig
> die Codes der Zeichen in dump.sql kennt.
>
> MySQL dumpt nach meinem Wissen keine ? statt 'än'.

Vor 4.1 schreibt mysqldump alle Strings so raus, wie sie in der
Datenbank stehen. Wenn man also UTF-8 in die Tabellen schreibt,
kommt nachher auch UTF-8 in den Dump. War's latin-1, dann latin-1.

Beginnend mit 4.1.1 schreibt mysqldump dann prinzipiell UTF-8 und
zusätzliche CHARSET/COLLATION Attribute für Tabellen/Spalten.
Dadurch werden die Daten beim Import konvertiert.

Alles IIRC. Details kennt das Handbuch.


XL

Re: Umlaute

am 20.01.2006 08:26:36 von Martin Schneider

Hi Reinhard,
> Meine MYSQL Datenbank zeigt mir Umlaute mit merkwürdigen Zeichen an.
> Ich füge Daten über ein PERL-Script ein ...
>
> Wenn ich gar nichts codiere oder decodiere zeigt er mir sowohl in der Linux-SHELL
> als auch in der Datenbank die falschen Umlaute an.
>
> Wenn ich die Daten utf-8 codiere zeigt er mir für einen Umlaut 4 merkwürdige Zeichen an. (in der Linux-Shell
> und in der Datenbank)
>
> Wenn ich die DATEN utf-8 DEcodiere zeigt er mir in der Linux-Shell die Umlaute richtig an,
> speichert es aber verkehrt in die Datenbank
>
>
> Was kann das sein ?
Schon mal das hier gelesen?
http://dev.mysql.com/doc/refman/5.0/en/localization.html

Viele Grüße

Martin

Re: Umlaute

am 20.01.2006 09:01:59 von Axel Schwenke

"Reinhard Glauber" wrote:

groups.google.com ist dein Freund.
Das Thema wird hier alle 2 Wochen angefragt.

Meine Glaskugel sagt: du verwendest MySQL 4.1 oder neuer.
Ferner hast du anscheinend das Manual zum Thema "Zeichensätze
und Collations" nicht gelesen. Nachholen!

> Meine MYSQL Datenbank zeigt mir Umlaute mit merkwürdigen Zeichen an.

Die Datenbank zeigt gar nichts an. Client-Programme tun das.

> Wenn ich die DATEN utf-8 DEcodiere zeigt er mir in der Linux-Shell die
> Umlaute richtig an, speichert es aber verkehrt in die Datenbank

Woran machst du das fest, daß das "in der Datenbank verkehrt" ist?
Eine Spalte mit Texttyp hat ab MySQL 4.1.x immer ein zugeordnetes
Encoding (CHARSET). Anhand dessen werden Strings interpretiert und
falls notwendig, konvertiert.

> Was kann das sein ?

Du deklarierst das Encoding deiner Strings, die du in die Datenbank
stopfst, nicht richtig. Und/oder du sagst der Datenbank nicht, in
welchem Encoding du Strings von ihr zurück haben möchtest.


XL