Announcement

Collapse
No announcement yet.

zeichenkodierung von db in mysql falsch?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • zeichenkodierung von db in mysql falsch?

    hi leute,

    ich bin neu hier im forum und hoffe, dass ihr mir helfen könnt ;-)

    und zwar bin ich dabei ein eigenes gästebuch auf datenbankbasis zu erstellen.
    die anfänge klappen auch ganz gut, aber eine sache passt nicht.
    alle umlaute, die in der datenbank in den einträgen enthalten sind, werden nach ausgabe mittels php auf meiner website nicht richtig angezeigt.

    alle anderen umlaute vom normalen inhalt jedoch schon. das ist auch richtig so, weil die kodierung meiner website utf_8 ist.

    bin allerdings datenbankneuling, daher weiß ich nicht, wie das da mit der zeichenkodierung ist. es muss auf alle fälle irgendwie mit den db-einstellunge zu tun haben.

    komisch ist dabei (ich nutze phpmyadmin), dass auf dessen startseite als zeichenkodierung auch utf_8 angegeben wird. es müsste dann doch eigentlich funktionieren?
    was es leider nicht tut^^

    hat vll. kollatation irgendwas damit zu tun? diese werte habe ich auch alle auf utf_8 gestellt, aber es hat trotzdem nicht geklappt.

    wie bekomme ich die umlaute also wieder richtig angezeigt?
    die umlaute ersätzen durch diese komischen zeichenfolgen will ich nicht, da dies ja nur das problem verschleiert.

    ich hoffe ihr könnt mir helfen und habt ideen ;-)

    danke schonmal

    grüße hokage

  • #2
    Hallo hokage,

    entscheidend ist hier die Kodierung der MySQL-Verbindung. Diese muß zur Kodierung des Frontends passen. Wenn also deine Webseite UTF-8 kodiert ist, mußt du auch eine UTF-8 kodierte MySQL-Verbindung verwenden oder vorher die Daten passend umkodieren.
    Lass dir mal mit mysql_client_encoding ([ resource $Verbindungs-Kennung ] ) ausgeben welche Kodierung aktuell verwendet wird.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      hi falk

      danke für deine antwort ;-)

      aktuell wird bei mir die kodierung latin1 verwendet.
      wie schaffe ich es denn diese auf utf-8 umzustellen?

      wäre sehr über deine hilfe erfreut

      grüße hokage

      edit: habe durch diesen php-code schnippsel "mysql_query("SET NAMES utf8");" das problem gelöst ;-)
      trotzdem würde mich interessieren, was genau da jetzt falsch war, weil diesen schnippsel habe ich im netz gefunden und ich weiß nicht so genau was genau der wo jetzt in der kodierung ändert ^^
      Zuletzt editiert von hokage; 14.04.2009, 14:25. Reason: lösung gefunden

      Comment


      • #4
        Hallo hokage,

        offensichtlich ist deine MySQL-Installation auf latin1 konfiguriert (default-character-set in my.ini). Damit wird automatisch eine latin1-Client-Verbindung aufgebaut. Wenn jetzt dein Client aber UTF-8 spricht, dann gibt es logischerweise Probleme. Mit dem Befehl SET NAMES kannst du explizit eine Kodierung für die Clientverbindung setzen.
        Ab MySQL-Version 5.0.7 und PHP 5.2.3 wird die Verwendung der Funktion mysql_set_charset ( string $charset [, resource $link_identifier ] ) empfohlen.

        Eine latin1-Verbindung und UTF-8 Tabelle ist übrigens kein Problem, da MySQL die Kodierung der Verbindung und der Tabelle kennt und automatisch eine Umkodierung vornimmt. Welche "Sprache" dein Frontend spricht kann MySQL jedoch nicht wissen, so dass du hier selbst eine Anpassung vornehmen mußt.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Normalerweise sollte die Codierung auf DB-Eben egal sein. Ein vernünftiger Datenbank-Treiber liefert dir die Daten als normalen (Unicode-)String zurück. ich würde erst mal checken was auf PHP-Seite nach auslesen der Daten als String ankommt (evtl. in Textdatei zur kontrolle schreiben).

          Comment

          Working...
          X