tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
261
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    oli0602 oli0602 ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    6
    Hallo Leute,

    ich denke mein Problem gibt es des Öfteren aber dennoch habe ich bisher weder hier, noch in anderen Foren eine Lösung gefunden. Vielleicht ist auch der Denkansatz einfach der Falsche. Mal schauen.

    kurz die relevanten Infos:
    • MySQL-Datenbank v5.5.8
    • utf8_general_ci - Zeichensatz
    • Ex-/Import mittels phpMyAdmin
    • Datenbankanwendung mit Hilfe von PHP realisiert

    Folgendes Problem:

    Ich habe meine Datenbank namens "Datenbank" per phpMyAdmin von meiner MySQL-Datenbank v5.5.8 exportiert. Innerhalb des Dumps werden alle Umlaute im Editor richtig angezeigt. Alle Relationen und die Datenbank selber hatten utf8_general_ci als Zeichensatz.

    Nun habe ich den erstellten Dump wiederum per phpMyAdmin in eine andere MySQL-Datenbank v5.5.8 importiert. Auch dort sind alle Relationen und die Datenbanken selber mit dem Zeichencode utf8_general_ci "formatiert". Auch der Kollation habe ich utf8_general_ci zugeweisen. Soweit so gut. Alle Umlaute sehen da auch ganz gut aus.

    Nun zum spannenden Teil: Auf die Datenbank setzt eine Datenbankanwendung auf. Diese besteht aus PHP-Seiten, ebenfalls mit dem Zeichensatz utf8_general_ci angegeben. Bei der "alten" Datenbank wurden mir die Umlaute wie gewünscht angezeigt. Nun leider nicht mehr. Obwohl ich weder an den Zeichensätzen in der MySQL-Datenbank noch an den PHP-Seiten herumgespielt habe.

    Probierte Lösungsansätze:
    • SQL-Dump mit dem Editor als utf8 abgespeichert und neu importiert: Fehlanzeige
    • Importiert mit latin1 als Zeichensatz: Fehlanzeige
    • Importiert mit ascii als Zeichensatz: Fehlanzeige
    • Dump in Netbeans geöffnet und als utf8 abgespeichert. Danach wieder import mit utf8-Angabe: Fehlanzeige
    Dazu sollte ich vlt. erwähnen, dass die utf8-codierte Dump in Netbeans die Umlaute nicht richtig anzeigt und dafür aber die ANSI-codierte Dump in Netbeans richtig angezeigt wird.

    Was habt ihr denn noch für Vorschläge? Ich weiß, dass es auch mit ISO-Formatierungen etc. gehen sollte, aber warum nicht auch unter utf8

    Grüße
    oli
    Geändert von oli0602 (29.07.11 um 21:40 Uhr)
     

  2. #2
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    Hallo,

    du scheinst hier einige wesendliche settings der datenbank zu vermischen.

    du hasst einerseits die collation der spalte (utf8_bin oder whatever). Diese collation gibt aber lediglich an in welchem format das ganze intern gespeichert wird, und welcher "wertebereich" zulässig ist. Es hat nichts damit zu tun was der client liefern muss, oder bekommt.

    und dann gibt es das client charset, das connection charset, und noch n paar andere.

    Für dich hier wichtig ist das client charset. MySQL convertiert die daten aus feldern automatisch in das character_set_client, und zwar fast komplett unabhängig von der collation.
    Beim inserten von datensätzen, wird ebenfalls das client encoding als ausgangsbasis verwendet für die convertierung.

    Machst du also einen dump von einer tabelle, lohnt es sich sicherzustellen, dass die character set informationen mit enthalten sind (--set-charset), so dass diese beim wiedereinspielen korrekt an das format des dumps angepasst werden. (die option ist default in aktuellen versionen von mysql, das war aber nicht immer so!)

    Beim abfragen stellt sich natürlich das selbe problem:

    In PHP gibt es die funktion mysql_client_encoding die dir das aktuelle encoding zurück liefert.

    ändern kannst du das client charset mit
    Code sql:
    1
    
    SET CHARACTER_SET_CLIENT = 'utf8';
     

  3. #3
    oli0602 oli0602 ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    6
    Super hat funktioniert. Ich gebe bei jeder Aufnahme der Datenbankverbindung mittels:

    PHP-Code:
    mysql_set_charset 'utf8'$connectionid ); 
    den zu verwendenden Zeichensatz mit. Tatsächlich war bisher "latin1" eingestellt.

    Danke und erledigt!
     

Ähnliche Themen

  1. Falsche Ausgabe
    Von crazy_chicken im Forum PHP
    Antworten: 2
    Letzter Beitrag: 15.05.11, 14:05
  2. Falsche Ausgabe
    Von YStadler im Forum PHP
    Antworten: 11
    Letzter Beitrag: 13.07.08, 11:55
  3. Falsche Ausgabe
    Von HackTack10 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 21.10.05, 14:57
  4. falsche ausgabe aus XML datei
    Von hohly im Forum PHP
    Antworten: 1
    Letzter Beitrag: 21.10.05, 04:20
  5. Falsche Ausgabe mit PEAR::DB
    Von StefanR im Forum PHP
    Antworten: 1
    Letzter Beitrag: 11.11.04, 05:05

Stichworte