Piep: MYSQL - � encoding Problem

Hallo

ich habe ein Encodingproblem welchen ich nicht in den Griff bekomme. Kurz ein Beispiel.
Laut PHPMYADMIN habe ich "Abbehauser Hörne" in meiner Spalte stehen. Sowohl Datenbank als auch Tabelle haben "Kollation" utf8_general_ci.

Wenn ich nun einen Select auf genau diesen Datensatz mache bekomme ich ein Datensatz mit � statt den Sonderzeichen. Also in dem Beispiel von oben "Abbehauser H�rne"

Mein Ansatz war also folgender:

header("Content-Type: text/html; charset=utf-8");  
mysql_query("SET NAMES 'utf8'");  
mysql_query("SET CHARACTER SET 'utf8'");

Leider keine Besserung. Und was nun?

  1. Tach!

    ich habe ein Encodingproblem welchen ich nicht in den Griff bekomme. Kurz ein Beispiel.
    Laut PHPMYADMIN habe ich "Abbehauser Hörne" in meiner Spalte stehen. Sowohl Datenbank als auch Tabelle haben "Kollation" utf8_general_ci.

    Liest sich schon nicht schlecht. Wenn der PMA richtig anzeigt, sollten die Daten richtig abgelegt sein. Letzlich kommt es aber auf die Kodierung des Feldes und nicht mehr auf die Default-Wete von Datenbank und Tabelle an.

    Wenn ich nun einen Select auf genau diesen Datensatz mache bekomme ich ein Datensatz mit � statt den Sonderzeichen. Also in dem Beispiel von oben "Abbehauser H�rne"

    Sowas sieht man, wenn UTF-8 erwartet wird, stattdessen aber Latin1 kommt.

    Mein Ansatz war also folgender:

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

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

      
    Eigentlich nicht schlecht, wobei aber SET CHARACTER SET überflüssig bis kontraproduktiv ist und genau genommen besser nur mysql\_set\_charset() genommen werden sollte. SET NAMES ist aber für hierzulande auch ausreichend. Siehe [SELFHTML-Wiki: Zeichencodierung MySQL](http://wiki.selfhtml.org/wiki/Themen:Zeichencodierung/MySQL).  
      
    Was den Fehler verursacht, kann ich aus dem Posting nicht entnehmen. Wenn wirklich nur das und keine weitere Umkodierung stattfindet, sollte es eigentlich gehen. Zur Kontrolle gib mal bitte den Wert direkt nach dem Fetchen urlencode()-iert aus.  
      
      
    dedlfix.
    
    1. Moin

      Wahrscheinlich liegt das an einer in deinem Browser fest eingerichteten Standard-Zeichencodierung. Gib mal einen entsprechenden Metatag mit. Dann solltes laufen. Oder schau in deinen Einstellungen ob automatisch bei der Zeichencodierungswahl eingestellt ist.

      Gruß Bobby

      --
      -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
      ### Henry L. Mencken ###
      -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
      ## Viktor Frankl ###
      ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)