Sebastian: Umstellung auf UTF-8 Codierung mit MySQL5

Hallo zusammen!

Ich hoffe, hier kann mir jemand bei meinem Problem helfen.

Also folgendes: Ich habe meine Website auf PHP5 und MySQL5 umstellen lassen. In diesem Zuge will ich auch gleich UTF-8 einführen, was mir aber irgendwie nicht so recht gelingen will. Es werden immer diese dummen ? angezeigt und ich krieg sie einfach nicht weg.

  • Meine MySQL-DB, die Tabellen und die Felder in den Tabellen haben die Collation utf8_unicode_ci.
  • Das Charset der produzierten HTML-Seite ist UTF-8.
  • Die PHP-Sourcen sind alle UTF-8 codiert.

Aber sobald ich einen Umlaut aus der DB auslese bekomme ich nur ein ?. Steht der Umlaut im fest codierten Text der PHP-Datei, wird er korrekt als Umlaut ausgegeben.

Bitte helft mir, ich bin am verzweifeln.

Gruß
Sebastian

  1. Hallo Sebastian,

    • Meine MySQL-DB, die Tabellen und die Felder in den Tabellen haben die Collation utf8_unicode_ci.
    • Das Charset der produzierten HTML-Seite ist UTF-8.
    • Die PHP-Sourcen sind alle UTF-8 codiert.

    Aber sobald ich einen Umlaut aus der DB auslese bekomme ich nur ein ?.

    hast du denn daran gedacht, die *Inhalte* der DB auch von (vermutlich) ISO-8859-x auf UTF-8 umzucodieren? Falls nein, ist das nur logisch, was du beobachtest:
    Du liest DB-Inhalte aus, die ISO-codierte Zeichen >0x80 enthalten, weist aber den Browser des Besuchers an, diese Inhalte als UTF-8 zu interpretieren (PHP und der Webserver dazwischen kümmern sich in diesem Sinn nicht um diese Codierungsgeschichten). Und in UTF-8 sind die meisten Bytewerte, die in ISO z.B. Umlaute darstellen, eben ungültige Bytewerte.

    So long,
     Martin

    --
    Ich bin 30. Ich demensiere apokalyptisch.
      (Orlando)
    1. Hallo Martin

      hast du denn daran gedacht, die *Inhalte* der DB auch von (vermutlich) ISO-8859-x auf UTF-8 umzucodieren?

      Aber er sollte es doch korrekt anzeigen, wenn ich die Umlaute manuell per phpMyAdmin ändere, oder?

      Hab ich zumindest mit den Vereinsnamen mal gemacht und keine Veränderung festgestellt.

      Des weiteren hab ich auch versucht, die Tabellen per phpMyAdmin zu exportieren, in UTF-8 umzukonvertieren und dann inclusive "Drop Table" wieder zu importieren. Auch das hat nicht funktioniert.

  2. echo $begrüßung;

    Ich habe meine Website auf PHP5 und MySQL5 umstellen lassen. In diesem Zuge will ich auch gleich UTF-8 einführen, was mir aber irgendwie nicht so recht gelingen will. Es werden immer diese dummen ? angezeigt und ich krieg sie einfach nicht weg.

    Fragezeichen werden dann angezeigt, wenn derjenige, der UTF-8-Text zu interpretieren hat, keine gültige UTF-8-Sequenz vorfindet. Das wäre z.B. der Fall, wenn ein als UTF-8 deklarierter Text Zeichen enthält, die nach ISO 8859-1 kodiert sind. Siehst du die ?-Zeichen richtig, wenn du im Browser unter Ansicht auf ISO-8859-1 umstellst? Wenn nicht, hat schon PHP Mist erhalten und nur durchgereicht.

    • Meine MySQL-DB, die Tabellen und die Felder in den Tabellen haben die Collation utf8_unicode_ci.
    • Das Charset der produzierten HTML-Seite ist UTF-8.
    • Die PHP-Sourcen sind alle UTF-8 codiert.

    Welche Kodierung wird auf der Verbindung zwischen MySQL und deinem PHP-Script gesprochen? Leg sie explizit fest, indem du ein SET NAMES utf8 direkt nach dem Connect sendest.

    echo "$verabschiedung $name";

    1. umarm($dedlfix);

      Welche Kodierung wird auf der Verbindung zwischen MySQL und deinem PHP-Script gesprochen? Leg sie explizit fest, indem du ein SET NAMES utf8 direkt nach dem Connect sendest.

      Vielen Dank! Das Problem ist gelöst! Jetzt bin ich happy!