PhpMyAdmin UTF8

Hallo,

ich hab ein Php Programm, mit dem man Texte schreiben und in einer MySQL Datenbank speichern kann und wieder ausließt.
Dabei wird UTF8 als Zeichenkodierung genutzt.

Sowohl das editieren als auch anzeigen klappt wunderbar.
Jezt wollte ich einen der Texte per phpMyadmin änderen. Doch phpMyAdmin schreibt gnadenlos Iso statt utf 8 in die DB.

Dabei hab ich die Datenbanktabelle wie folgt erstellt:

CREATE TABLE IF NOT EXISTS `TABELLEN_NAME` (
 `lfdnr` int(11) NOT NULL auto\_increment,
 `headline` varchar(40) collate utf8\_bin NOT NULL default '',
[..........]

Dort steht dann z.B: 17 testäöüÄÖÜß.
In meinen Php Programm steht 17 testäöüÄÖÜß.

Schreibe ich „testäöüÄÖÜß“ mit phpMyAdmin zeigt das phpProgramm „test???“.
Wechsele ich Browser auf iso-8859-1, wird es korrekt dargestellt.
phpmyadmin schreibt also Iso-Text statt utf8, obwohl ich „collate utf8_bin“ beim erstellen angegeben habe.
Wie kann ich erreichen, das phphMyAdmin UTF8 schreibt?

Gruß Thomas

Wie kann ich erreichen, das phphMyAdmin UTF8 schreibt?

indem du phpmyadmin so einsttellst. und in den eigenschaften des browserfensers prufst, welcher zeichensatz im phpmyadmin verwandt wird.

merke: browser->textfeld->php->mysql. der browser bestimmt also, welche codierung in die db kommt.

UTF8 is aber Eingestellt
Soweit war ich auch schon.
Der Browser hat UTF8.

Die Einstellungen von phpMyAdmin:
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8_bin

Es wird anscheinend UTF8 gepostet aber dann in iso gewandelt. warscheinlich mit der php-funktion utf8_decode().

Hi,

versuch mal gleich nach dem Verbinden die Query

SET NAMES 'utf8'

auszuführen, und die Daten danach zu schreiben.
Die utf8*-Funktionen von PHP solltest Du nie benötigen. Um sicher zu gehen, dass auch wirklich utf8 im Browser angezeigt wird, kannst Du

header("Content-Type: text/html; charset=UTF-8");

vor der Ausgabe ausführen. Vermeide auch htmlentities() und beschränke Dich auf htmlspecialchars().

Ciao
Rudy

Es Klappt, Fehler konnte rekostruiert werden

[…]nach dem Verbinden die Query

SET NAMES ‚utf8‘

auszuführen […]

Ja das wars.
Es geht jezt.

Das war anscheinend passiert:
MySQL dachte, mein PHP Programm sendet ISO.
Der UTF-8 Code testäöüÄÖÜß heißt in ISO testäöüÄÖÜß.
In der DB ist das Textfeld auf UTF-8 eingestellt. Also wandelte MySQL ISO: testäöüÄÖÜß. Nach UTF-8: testäöüÄÖÜß. um.

Das hat phpMyAdmin ausgelesen.

Mit dem Befehl SET NAMES ‚utf8‘ (in MEINEM Programm eingebaut), wird MySQL jezt mitgetilt, was für ein Charset kommt, und es wird auch so Eingetragen.

Dank an Rudi