basti_p: Problem mit UTF8 und MySQL

Hallo,

ich habe ein seltsames Problem:

ich möchte tschechische Texte in eine MySQL-Tabelle schreiben.
Die verarbeitenden PHP-Dateien sind alle UTF8-codiert, die MySQL-Verbindung wird mit

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

auch in den entsprechenden Modus versetzt.
Wenn ich mir das Statement ausgeben lasse, wird alles korrekt angezeigt:

INSERT INTO _cms_text_content_ SET entry_parent_id=50,cat_1='module', cat_2='katalog', name='name_lang', content='skupinový či individuální ',language='cz'

ABER: in der Tabelle steht nach dem Schreibvorgang:
skupinový ?i individuální (mit Fragezeichen);-(

Habt ihr einen Tipp für mich?

Danke und Grüße Basti

  1. Hi,

    ABER: in der Tabelle steht nach dem Schreibvorgang:
    skupinový ?i individuální (mit Fragezeichen);-(

    Und wie hast du das ueberprueft?

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  2. Moin!

    ich möchte tschechische Texte in eine MySQL-Tabelle schreiben.
    Die verarbeitenden PHP-Dateien sind alle UTF8-codiert, die MySQL-Verbindung wird mit

    mysql_query("SET NAMES 'utf8'");
    mysql_query("SET CHARACTER SET 'utf8'");

    auch in den entsprechenden Modus versetzt.

    Sind denn auch die Textfelder auf UTF-8 gesetzt worden?

    Dein Problem sieht nämlich so aus, als ob der Standard "Latin1" (=IS=-8859-1) belassen wurde, und in diesem Encoding sind nicht alle tschechischen Zeichen darstellbar. Logisch, dass MySQL dann nicht codierbare Zeichen irgendwie "wegwerfen" muß.

    - Sven Rautenberg

    1. Hallo,

      die Textfelder in der Tabelle sind alle auf Kollation "utf8_general_ci" gesetzt.

      Ich habe aber eben bemerkt, dass das Speichern meiner PHP-Datei, welche die Query ausführt, als UTF8 nicht funktioniert. Nach jedem neuen Öffnen (z.B. mit Textpad) steht die Kodierung wieder auf "ANSI". Was kann das denn sein???

      Grüße Basti

  3. echo $begrüßung;

    Die verarbeitenden PHP-Dateien sind alle UTF8-codiert, die MySQL-Verbindung wird mit

    mysql_query("SET NAMES 'utf8'");
    mysql_query("SET CHARACTER SET 'utf8'");

    Du bist dir sicher, dass du die Auswirkungen von SET CHARACTER SET haben möchtest? Auf welche Kodierung ist denn die Datenbank eingestellt, in der deine Tabelle liegt?

    Es ist nie sinnvoll, SET NAMES und SET CHARACTER SET gleichzeitig verwenden zu wollen, denn das eine überschreibt die Änderungen des anderen und umgekehrt. Desweiteren ist SET NAMES in 99% der Fälle das Mittel der Wahl.

    Ist deine PHP-Version so alt, dass du kein mysql_set_charset() verwenden kannst?

    echo "$verabschiedung $name";