PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql, utf8 und Umlaute


Gast
2009-10-16, 12:18:15
Hallo!

Gerade stehe ich bei folgendem Problem auf dem Schlauch:

Ich verwende auf meiner Website UTF8 und lese über ein HTML-Form Daten ein, welche in eine MYSQL-DB gespeichert werden.

Schreibe ich nun "Bäcker", so lautet der Eintrag in PHPMYAdmin allerdings "Bäcker". Das ist weiter kein Problem, da das auslesen mit PHP das Wort wieder mit dem richtigen "ä" darstellt (ich denke das liegt daran, dass MySQL nur einen Datenstrom speichert, und wenn dieser später wieder in utf8-html gegossen wird, stimmts wieder). Doch warum zeigt phpmyadmin den Umlaut falsch an? Ich habe das Tool mal untersucht und festgestellt, dass dessen Ausgabe wohl in iso-irgendwas erfolgt.. kann man wa was machen?

Danke


PS: wenn ich ein Backup aus phpmyadmin exportiere, so schreibt das Tool lustigerweise das richtige "ä". Importiere ich das Backup wieder, so stet auch in phpmyadmin plötzlich "ä", allerdings ist die Ausgabe unter PHP +9 utf8 dann falsch. Muss also erst wieder in phpyadmin das eigentlich richtige ä auf ä ändern.

darph
2009-10-16, 12:45:24
Sind deine PHP-Dateien (!) auch in UTF-8 kodiert? Was ist denn in deinem HTML als Kodierung angegeben?

Ach, man sollte alles lesen. :usad:

universaL
2009-10-16, 12:45:26
hat denn die datenbank und die tabelle die richtige kodierung(collation iirc) für utf8?

fezie
2009-10-16, 12:49:35
PHPMyAdmin erlaubt den Zeichensatz/die Kollation zu ändern direkt auf der Frontpage wenn man sich eingeloggt hat.
Den Standard Wert davon kannst per "$cfg['DefaultConnectionCollation']" in der config festlegen.
Aber vielleicht hast du ja auch noch ne uralt Version.
Aktuell ist zur Zeit 3.2.2.1.

Gast
2009-10-16, 17:40:27
Danke soweit.

"Zeichensatz / Kollation der MySQL-Verbindung" direkt auf der Startseite steht auf utf8_general_ci, das betreffende Feld in der Tabelle auch, ist da was anderes besser?

darph: der header erzwingt utf8 und das charset in html steht ebenfalls auf utf8, aber in html ist ja auch alles so wie es sein sollte.

Coda
2009-10-16, 18:38:47
Was hast du denn in der Tabelle eingestellt? Auch UTF8?

Gast
2009-10-16, 18:55:04
Auch utf8_genral_ci.

Wenn ich mir über Firefox die Seiteninformationen anzeigen lasse, so steht da bei Codierung der PHPmyadmin-Seite ansich ISO-8859-1, genauso im HTML-Quelltext.

Auf der Starttseite des Tools steht aber noch dick "MySQL-Zeichensatz: UTF-8 Unicode (utf8)", eine weitere Option zum steuern der Ausgabe hab ich bisher nicht gefunden.

fezie
2009-10-16, 19:11:27
Also bei meinem phpMyAdmin steht
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
im HTML Quelltext.
Aber kannst es beim FF ja auf UTF-8 umstellen.
Gibt vielleicht sogar nen Addon was das speichert.

wry
2009-10-16, 19:24:26
Anscheinend sind deine Daten schonmal in UTF-8, nur leider werden sie falsch interpretiert (nämlich in ISO 8859-1)


Warum zeigt mein Textbrowser statt Sonderzeichen Zeichensalat an?

Problem: Wenn das Terminal, in dem der Textbrowser (z. B. Lynx, w3m) läuft, eine andere Zeichenkodierung verwendet, werden statt Sonderzeichen unlesbare Zeichenketten angezeigt, etwa Ð?оÑ?ква statt Москва oder ä statt ä. Dabei handelt es sich um UTF-8-kodierte Zeichen, die von der Konsole nicht als solche interpretiert werden, sondern als ISO 8859-1. Die Sonderzeichen werden zwar beim Speichern nicht zerstört, jedoch ist es schwierig, den Text zu lesen und zu bearbeiten.


Vielleicht hilft dies hier:
http://www.sjmfreelancing.de/devblog/umlaute-utf-8-und-php.html

Gast
2009-10-17, 00:11:09
du musst mysql auch mitteilen, in welchem zeichensatz du die daten übermittelst!
wahrscheinlich lässt sich dein problem dadurch lösen, dass du einfach direkt nach dem aufbauen der mysql-verbindung ein "SET NAMES utf8" sendest.

samm
2009-10-17, 01:39:20
Falsch, das Problem liegt nicht bei MySQL, sondern bei PHP (resp. der Codierung von phpMyAdmin).

Gast
2009-10-17, 02:56:28
Falsch, das Problem liegt nicht bei MySQL, sondern bei PHP (resp. der Codierung von phpMyAdmin).
quatsch, phpmyadmin macht alles richtig, das problem liegt bei der selbstgeschriebenen php-anwendung und lässt sich wie gesagt mit "set names utf8" beheben.