guklplatzwart
Newbie
Hallo @all.
Nach mehrmaligem bemühen der SuFu mit den Begriffen ->Zeichensatz, character-set<- bin ich in diesem Forum nicht zu einer Antwort auf meine Frage gekommen. Auch verschiedenartige nachfragen bei Google brachten mich nicht auf den Pfad der Erkenntnis. Dabei ist die Frage im ersten Moment ganz einfach:
Wie bekomme ich ein "ü" auch als ein "ü" in eine MySQL-Datenbank?
OK - fangen wir also vorne an. Die Umgebung der Datenbank sieht folgendermaßen aus:
SUSE 11.3 - MySQL 5.1.57 - Apache 2.2.15 - PHP 5.3.3 - Standard runlevel 3
Was soll passieren:
Der Eintrag aus einem Texteingabefeld einer Weboberfläche (textarea) soll in die Datenbank geschrieben werden. Da später eine Abfrage per $_GET erfolgt, brauche ich eben einen Umlaut auch als Umlaut in der Datenbank und nicht als htmlentities. Das es geht zeigt mir die Datenbankverwaltung auf diversen Webspaces. Nur auf meiner lokalen Maschine will das nicht funktionieren.
Mein Browser verwendet die Standard-Zeichenkodierung iso-8859-1. Der meta-tag im html-Dokument wird angegeben mit content="text/html; charset=iso-8859-1". Die Kollation der Datenbank-Tabellen ist latin1_german1_ci. Auch sind die Datenbank-Felder, welche nicht integer sind, alle latin1_german1_ci. Bei diesen Rahmenbedingungen gelingt es mir nicht einen Umlaut in die Datenbank zu bekommen. Ein Fragezeichen (?) nimmt den Platz des Umlauts ein.
Lösungsversuche:
Der PMA zeigt mir an, dass der MySQL-Zeichensatz utf8 ist. Folglich habe ich mir gedacht, dass der MySQL-Zeichensatz in der Konfigurationsdatei (/etc/my.cnf) zu ändern/einzutragen sei. Hier brachte die Google-Suche erfolg, indem ich erfuhr welcher Eintrag wie lauten muß und wo er hingehört. Dabei habe ich verschiedene Varianten ausprobiert (mal das eine kommentiert, mal was anderes kommentiert). Hier mal ein Ausschnitt aus der my.cnf im kommentierten zustand:
Dabei hatte ein editieren der my.cnf (als root) grundsätzlich immer ein nicht neustarten der Datenbank zur folge.
Nachdem das also misslungen war habe ich nochmal hier im Forum nachgeschaut und dabei folgenden Satz gelesen: "Nimm einfach UTF-8 und gut ist. Dann können die Einträge auch Klingonisch sein ."
Also hab ich mich an die Arbeit gemacht und alles auf utf8 umgestellt (den Browser, das html-Dokument und die Kollationen der Datenbank). Aber auch das brachte keinen Erfolg. Schlimmer noch: Der Umlaut und sämtliche folgenden Zeichen wurden nun gar nicht mehr berücksichtigt.
In der Konsole habe ich dann auch mal folgendes eingegeben: mysql --default-character-set=latin1
Die Kontrolle haben ich mit folgendem Befehel gemacht:
Nach Abmeldung und Neuanmeldung an MySQL habe ich dann nochmal eine Kotrolle gemacht.
Also ist die Konsoleneingabe: mysql --default-character-set=latin1 nur temporär gültig.
Auch die Lektüre der MySQL-Dokumentation brachte mich nicht wirklich weiter. Dort werden zwar die Optionsdateien (Konfigurationsdateien) zu den verschiedenen Systemen (Unix/Win) behandelt, aber einen Lösungsansatz konnte ich dort nicht entdecken.
Erwähnen möchte ich noch, dass auch einfache Textdateien auf Win geschrieben in der Linuxkonsole keine Umlaute anzeigen. Auch wenn ich vesuche in der Konsole in diese Textdateien Umlaute rein zu schreiben geschieht nichts. Dabei wird das deutsche Tastaturlayout (qwertz) benutzt.
Vielleicht ist hier jemand so wissend und kann mir den Pfad der Erkentnis zeigen.
Sollte es sich allerdings um ein wohl gehütetes Geheimnis der Webhoster handeln, welches sie nach Möglichkeit nicht preisgeben wollen, werde ich wohl nicht drum herum kommen sämtliche Umlauteinträge per PMA zu erledigen. (Der kann das. Warum auch immer?)
Vielen Dank fürs lesen und sollte jemand einen Lösungsansatz haben wäre ich ihm wirklich dankbar.
MfG
guklplatzwart
Nach mehrmaligem bemühen der SuFu mit den Begriffen ->Zeichensatz, character-set<- bin ich in diesem Forum nicht zu einer Antwort auf meine Frage gekommen. Auch verschiedenartige nachfragen bei Google brachten mich nicht auf den Pfad der Erkenntnis. Dabei ist die Frage im ersten Moment ganz einfach:
Wie bekomme ich ein "ü" auch als ein "ü" in eine MySQL-Datenbank?
OK - fangen wir also vorne an. Die Umgebung der Datenbank sieht folgendermaßen aus:
SUSE 11.3 - MySQL 5.1.57 - Apache 2.2.15 - PHP 5.3.3 - Standard runlevel 3
Was soll passieren:
Der Eintrag aus einem Texteingabefeld einer Weboberfläche (textarea) soll in die Datenbank geschrieben werden. Da später eine Abfrage per $_GET erfolgt, brauche ich eben einen Umlaut auch als Umlaut in der Datenbank und nicht als htmlentities. Das es geht zeigt mir die Datenbankverwaltung auf diversen Webspaces. Nur auf meiner lokalen Maschine will das nicht funktionieren.
Mein Browser verwendet die Standard-Zeichenkodierung iso-8859-1. Der meta-tag im html-Dokument wird angegeben mit content="text/html; charset=iso-8859-1". Die Kollation der Datenbank-Tabellen ist latin1_german1_ci. Auch sind die Datenbank-Felder, welche nicht integer sind, alle latin1_german1_ci. Bei diesen Rahmenbedingungen gelingt es mir nicht einen Umlaut in die Datenbank zu bekommen. Ein Fragezeichen (?) nimmt den Platz des Umlauts ein.
Lösungsversuche:
Der PMA zeigt mir an, dass der MySQL-Zeichensatz utf8 ist. Folglich habe ich mir gedacht, dass der MySQL-Zeichensatz in der Konfigurationsdatei (/etc/my.cnf) zu ändern/einzutragen sei. Hier brachte die Google-Suche erfolg, indem ich erfuhr welcher Eintrag wie lauten muß und wo er hingehört. Dabei habe ich verschiedene Varianten ausprobiert (mal das eine kommentiert, mal was anderes kommentiert). Hier mal ein Ausschnitt aus der my.cnf im kommentierten zustand:
Code:
[client]
#password = your_password
port = 3306
socket = /var/run/mysql/mysql.sock
#default-character-set = latin1
[mysqld]
port = 3306
socket = /var/run/mysql/mysql.sock
# Change following line if you want to store your database elsewhere
datadir = /var/lib/mysql
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
#default-character-set = latin1
#collation-server = latin1
#init-connect='SET NAMES latin1_german1_ci'
#character-set-server = latin1
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
#default-character-set=latin1
Dabei hatte ein editieren der my.cnf (als root) grundsätzlich immer ein nicht neustarten der Datenbank zur folge.
Nachdem das also misslungen war habe ich nochmal hier im Forum nachgeschaut und dabei folgenden Satz gelesen: "Nimm einfach UTF-8 und gut ist. Dann können die Einträge auch Klingonisch sein ."
Also hab ich mich an die Arbeit gemacht und alles auf utf8 umgestellt (den Browser, das html-Dokument und die Kollationen der Datenbank). Aber auch das brachte keinen Erfolg. Schlimmer noch: Der Umlaut und sämtliche folgenden Zeichen wurden nun gar nicht mehr berücksichtigt.
In der Konsole habe ich dann auch mal folgendes eingegeben: mysql --default-character-set=latin1
Die Kontrolle haben ich mit folgendem Befehel gemacht:
Code:
mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
Nach Abmeldung und Neuanmeldung an MySQL habe ich dann nochmal eine Kotrolle gemacht.
Code:
mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
Also ist die Konsoleneingabe: mysql --default-character-set=latin1 nur temporär gültig.
Auch die Lektüre der MySQL-Dokumentation brachte mich nicht wirklich weiter. Dort werden zwar die Optionsdateien (Konfigurationsdateien) zu den verschiedenen Systemen (Unix/Win) behandelt, aber einen Lösungsansatz konnte ich dort nicht entdecken.
Erwähnen möchte ich noch, dass auch einfache Textdateien auf Win geschrieben in der Linuxkonsole keine Umlaute anzeigen. Auch wenn ich vesuche in der Konsole in diese Textdateien Umlaute rein zu schreiben geschieht nichts. Dabei wird das deutsche Tastaturlayout (qwertz) benutzt.
Vielleicht ist hier jemand so wissend und kann mir den Pfad der Erkentnis zeigen.
Sollte es sich allerdings um ein wohl gehütetes Geheimnis der Webhoster handeln, welches sie nach Möglichkeit nicht preisgeben wollen, werde ich wohl nicht drum herum kommen sämtliche Umlauteinträge per PMA zu erledigen. (Der kann das. Warum auch immer?)
Vielen Dank fürs lesen und sollte jemand einen Lösungsansatz haben wäre ich ihm wirklich dankbar.
MfG
guklplatzwart