UTF-8 Codierung aus MySQL-Datenbank laden
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
art
aufrufen
code
darstellen
datenbank
ergebnis
face
falscher kodierung
funktion
maskierung
not
nutz
problem
richtig darstellen
schau
set
stehen
umlaut
url
zeichen
-
Gibt es eine möglichkeit UTF-8 Codierte Wörte(in meinen Fall ü, ä, ö) aus einer MySQL-Datenbank zu laden, so dass sie richtig angezeigt werden?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hi
Das hier: http://blog.koehntopp.de/archives/1424-MySQL-Zeichensatz-Grundlagen.html dürfte dich ins gelobte Land führen.
Man sollte auch unbedingt darauf achten, dass eine als UTF-8 ausgezeichnete Datei auch als solche gespeichert wird. Je nach OS können da sonst merkwürdige Zeichen auftauchen.
(Bonuslink: http://decodeunicode.org/. Solltest das Menu übersehen, fahre über dieDoppelpunkte mit der Maus :o)
-
Hallo,
wenn ich dich richtig verstanden habe geht es dir nicht darum, sie in einer tabelle zu soecihern sondern sie entsprechend zu laden. ich denke das ist dann eher ein HTML-Problem. Schau dir mal die HTML-Metainformationen an oder nutze die PHP-Funktion htmlentities, da werden die zeichen korrekt maskiert (aus ü wird ü, aus ö ö usw.).
Hoffe das Hilft
Tillorgias -
tillorgias schrieb:
Schau dir mal die HTML-Metainformationen an oder nutze die PHP-Funktion htmlentities, da werden die zeichen korrekt maskiert (aus ü wird ü, aus ö ö usw.).
Nein, das ist keine Gute Idee die Zeichen HTML-kodiert in der Datenbank zu speichern. Dann können nämlich andere Programme, dies mit unter nicht richtig darstellen, bzw. man müsste mitunter händig eine Funktion schreiben die das zurück übersetzt ;-(
Dein Client-Encoding wird wahrscheinlich nicht UTF-8 sein, so dass alle Ergebnisse in dem Client-Encoding ausgegeben werden.
Prüfen kannst du das indem du in PHP folgendes machst:
<?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); $charset = mysql_client_encoding($link); echo "The current character set is: $charset\n"; ?>
Sollte dort irgendwas anderes als UTF-8 stehen, mache folgendes nachdem du dich zur mysql Datenbank verbunden hast.
<?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_query("SET NAMES 'UTF-8'"); echo 'Encoding: '.mysql_client_encoding($link); // ... mysql_close($link); ?>
Das müsste helfen... zumindest hätten sich dann Server und Client auf UTF-8 geeinigt
Grüßle
Beitrag zuletzt geändert: 22.7.2009 17:37:55 von scout -
tillorgias schrieb: ... (aus ü wird ü, aus ö ö usw.) ...
in prinzip ja, aber lassen wir ihn entscheiden, ob er unicode braucht oder nicht. wenn ja, dann sind die umlaute (ordnungshalber :o):
außerdem gibt es schöne andere möglichkeiten, z.B. ersparen von kleinen grafiken:Ä - "Ä" Ö - "Ö" Ü - "Ü" ä - "ä" ö - "ö" ü - "ü"
etc. etc. (kein grafik kann so klein sein!!). weitere vorteile dieser ist, dass man sie nach belieben färben kann, genau so wie buchstaben (sind ja auch).☺ - white smiling face ☻ - black smiling face ♿ - wheelchair symbol ❦ - floral heart
-
Klappt irgendwie nicht, wenn ich das Skript versuche, bleibt die Encodigng Art latin1. Und es wird nicht UTF-8
scout schrieb:
tillorgias schrieb:
Schau dir mal die HTML-Metainformationen an oder nutze die PHP-Funktion htmlentities, da werden die zeichen korrekt maskiert (aus ü wird &uuml;, aus ö &ouml; usw.).
Nein, das ist keine Gute Idee die Zeichen HTML-kodiert in der Datenbank zu speichern. Dann können nämlich andere Programme, dies mit unter nicht richtig darstellen, bzw. man müsste mitunter händig eine Funktion schreiben die das zurück übersetzt ;-(
Dein Client-Encoding wird wahrscheinlich nicht UTF-8 sein, so dass alle Ergebnisse in dem Client-Encoding ausgegeben werden.
Prüfen kannst du das indem du in PHP folgendes machst:
<?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); $charset = mysql_client_encoding($link); echo "The current character set is: $charset\n"; ?>
Sollte dort irgendwas anderes als UTF-8 stehen, mache folgendes nachdem du dich zur mysql Datenbank verbunden hast.
<?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_query("SET NAMES 'UTF-8'"); echo 'Encoding: '.mysql_client_encoding($link); // ... mysql_close($link); ?>
Das müsste helfen... zumindest hätten sich dann Server und Client auf UTF-8 geeinigt
Grüßle
-
H
keksessen schrieb: Klappt irgendwie nicht, wenn ich das Skript versuche, bleibt die Encodigng Art latin1. Und es wird nicht UTF-8
Hmm hab das gerade nochmal getestet und es geht wirklich nicht;
Wenn man per SQL-Statement das Charset anpasst merkt PHP davon scheinbar nichts mehr ;-(
Hab aber gesehen dass PHP eine neue Funktion mit 5.2.3 eingeführt hat:
<? mysql_set_charset('UTF8', $link); ?>
Wenn man Anstelle der SET NAMES Zeile diese Zeile benutzt kommt auch mit mysql_client_encoding...der eingestellte Zeichensatz.
Grüßle
Beitrag zuletzt geändert: 24.7.2009 15:59:26 von scout -
Datenbank ist jett auf UTF-8 Eingestellt.
Die Umlaute werden aber immer noch nicht angeeigt. -
Hallo,
es kann sein, dass ich mich ein bisschen unklar ausgedrückt habe. Ich meinte, dass die Zeichen korrekt in der Datenbank gespeichert werden und die Probleme erst beim darstellen entstehen. Sie sollen natürlich nicht kodiert in die Datenbank geschrieben werden. Wenn mann allerdings versuch, in HTML die Zeichen darzustellen, benötigt man eine maskierung der Zeichen (ob nun  oder ü ist dann ja egal).
Die Zeichen stehen also so in der Datenbank:
ÄÖÜ usw.
So werden Sie aber bei falscher kodierung in HTML falsch ausgegeben, darum sollte man htmlentities() aufrufen, und Sie dann so in die Seite schreiben:
Ä(&x0004;...) usw.
Gruß, Tillorgias -
tillorgias schrieb:
Hallo,
es kann sein, dass ich mich ein bisschen unklar ausgedrückt habe. Ich meinte, dass die Zeichen korrekt in der Datenbank gespeichert werden und die Probleme erst beim darstellen entstehen. Sie sollen natürlich nicht kodiert in die Datenbank geschrieben werden. Wenn mann allerdings versuch, in HTML die Zeichen darzustellen, benötigt man eine maskierung der Zeichen (ob nun  oder ü ist dann ja egal).
Die Zeichen stehen also so in der Datenbank:
ÄÖÜ usw.
So werden Sie aber bei falscher kodierung in HTML falsch ausgegeben, darum sollte man htmlentities() aufrufen, und Sie dann so in die Seite schreiben:
Ä(&x0004;...) usw.
Gruß, Tillorgias
Okay, es klappt jetzt bei ü, ä und ö. Aber irgendwie will das einfach nicht mit ß funktionieren.
Ist zwar nicht so schlimm(Dann benutt ich halt ss) aber es wäre gut, wenn ihr dafür auch noch ne Lösung habt. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage