PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql Umlaute werden in Bash nicht angezeigt :-(



Mathew
05.12.05, 06:47
Hallo zusammen,

folgendes Problem:

mysql Datenbank mit einem Feld "Name" wo z.b. Jürgen steht.

Mit einer GUI für mysql wird das Feld richtig angezeigt.
Wenn ich über eine PHP Seite zugreife ist der Name auch richtig.

Mache ich aber in einem Skript ein SELECT, dann bekomme ich als Feld "Jrgen" angezeigt, die Umlaute lässt der einfach weg *motz*

Nun, auf der Tastatur kann ich Umlaute eingeben, dann ist die Keyboardeinstellung richtig, in mysqladmin zeigt er mir auch Umlaute und in PHP auch. Ich würde mal behaupten, dass es nicht am mysql liegt. Die Tastatur eigentlich auch nicht oder doch ???

Hilfääääääääää

Tomek
05.12.05, 08:41
Vermutlich hast du in der Shell einen anderen Zeichensatz eingestellt (Variable $LANG) als in der Datenbank verwendet wird.

Mathew
29.12.05, 04:50
Hallo,

ich habe mich nun die ganze Nacht mit dem Problem beschäftigt und bin nicht weitergekommen :(

Umlaut und Sprachsonderzeichen werden in der Bash nicht angezeigt. Die Franzosen haben z.B. ein Strich über dem e.

mysql Server mit Daten wie MÜLLER oder BLEUTÉ. Ein Apache2 der Datenbankabfragen erstellt. Rufe ich nun die Seite auf, erhalte ich alle Sonderzeichen richtig angezeigt. Mit GUI Tools um direkt auf die Datenbank zuzugreifen werden ebenfalls alle Sonderzeichen richtig angezeigt.

Nur in der bash erhalte ich Leerzeichen bei jedem Sonderzeichen wie Ü oder É wenn ich mit mysql ein Select ausführe.

Nun habe ich SuSE komplett in Französisch installiert, habe den Zeichensatz und das Tastaturlayout ala Frankreich, erstelle mit mysql ein Select unter de Console und Peng, keine Sonderzeichen.

Also kann es ja nichts mit dem lokalen Rechner zu tun haben, mit der Datenbank ja auch nicht, sonst würde die PHP-Seite ja ebenfalls keine Sonderzeichen anzeigen.

Ich habe da keine Idee mehr :-(

Bitte um Hilfe.

Mathew
29.12.05, 05:47
also jetzt habe ich was mit utf8 und erhalte bei den Sonderzeichen überall ein Fragezeichen. Jetzt stimmt zwar die PHP Ausgabe nicht mehr, aber wenigstens ist die PHP Ausgabe und die bash Ausgabe identisch :-)
*grummel*

temir
29.12.05, 11:38
Die datei /etc/sysconfig/language lesen!
Besondere Beachtung der Variable RC_LC_CTYPE und dem Kommentar darüber.

Mathew
29.12.05, 16:48
so, jetzt habe ich in der /etc/sysconfig/language umgestellt:

RC_LANG="de_DE.UTF-8"
RC_LC_ALL="de_DE.ISO-8859-1"

und er zeigt mir Umlaute und sogar die Französischen Sonderzeichen auf der Console an *juhuuuu* und ich habe das nächste Problem *maaaaaaan*

Er generiert eine Textdatei in der alles richtig steht und kopiert diese zu einem Epson Bondrucker per /dev/ttyS0.

Alle Sonderzeichen werden durch verschiedene Grafikzeichen dargestellt. Die Umstellung auf Multilanguage oder einen anderen Zeichensatz beim Bondrucker ändert gar nichts :-(

So langsam geht mir die Puste aus. Ich programmiere eine Kassensoftware mit allem Schnickschnack, Verwaltung über PHP, Datenbank unter mysql und die Oberfläche unter der Console und schlage mich an so dämlichen Sonderzeichen und Umlauten rum. Nach 8 Stunden klappt jetzt die Console und ich stehe beim nächsten Problem wo ich nicht Ansatzweise vermute, wo ich das Problem lösen kann. :(

Mathew
29.12.05, 18:22
toll, jetzt habe ich versucht das mit dem Drucker zu lösen und nun gehen die Umlaute in der Console auch nicht mehr. Wenn ich unter Yast wieder alles so einstelle werden die Sonderzeichen wieder ignoriert, also Müller ist dann Mller.

Denke, ich mach erst mal eine Pause. Ich werde mich warscheinlich durch sämtliche Formate und Zeichensätze durchlesen müssen, bis ich dann weiß, wo ich eine Zeile editieren muss, damit der ganze Kram funktioniert.

temir
29.12.05, 20:01
Davon (hier meine ich die unterschiedlichen Charsets) könnten dir so einige 'ein Lied singen'.
Generell habe ich das Problem behoben, in dem ich die LC_ALL auf "de_DE@euro" (ISO8859-15, - das mit deutschen Umlauten) umstellte.
Für MySQL: ab 4.1.x kann man per DB den 'default-charset' einstellen (vielleicht sogar per Table?).

Was zu erwähnen wäre: RC_LC_ALL="de_DE.ISO-8859-1" überschreibt die restlichen RC_LC_... Variablen (das steht aber in der Datei) und
ISO-8859-1 ist english...