[SQL] Falsche Zeichenkodierung

Dieses Thema im Forum "Webentwicklung" wurde erstellt von romestylez, 31. März 2011 .

  1. 31. März 2011
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Falsche Zeichenkodierung

    Und zwar habe ich aufm alten Server ein komplettes Backup meiner DB gemacht.

    Nun habe ich es auf dem neuen Server importiert und muss leider feststellen das ä,ü,ö usw falsch angezeigt werden.

    Wenn ich bei FireFox die Zeichenkodierung auf ISO-8859-15 stelle dann wird es richtig angezeigt.

    In der .sql-Datei steht

    Ich habe das ganze mit dem SQL Dumper importiert und dort wurde ich auch nach dem Charset gefragt und habe UTF-8 angegeben.

    Bild

    Die Kollationen stehen alle auf "latin1_german1_ci"

    Ich weiss leider nicht mehr weiter und muss auch zugeben das ich nicht wirklich der MySQL Pro bin wäre also nett wenn ihr nicht irgendwelche Befehle postet sondern diese eventuell kurz erklärt
     
  2. 31. März 2011
    AW: Falsche Zeichenkodierung

    Die Angabe bezieht sich auf den Zeichensatz der .sql-Datei!


    Latin1 = Cp1252/Windows 1252 = ISO-8859-1
    Falls der Zeichensatz ISO-8859-1 (bzw. Cp1252) ist, ist es auch kein wunder, dass die meisten Zeichen in ISO-8859-15 richtig dargestellt werden, da sich die Zeichensätze kaum unterscheiden (Unterschiede, vgl. ISO-8859-15 mit Cp1252).


    Sieh dir den Zeichensatz Cp1252 genau an. Wenn dir die Zeichen innerhalb des Satzes ausreichen, dann bleib dabei und stell den content-type im HTML-Dokument oder mit PHP-header() auf Cp1252.


    Ansonsten solltest du überprüfen, ob die Standardkodierung des MySQL-Servers latin1 ist (character_set_client & character_set_connection) und ob du manuell die Verbindungskodierung angibst (SET NAMES ***)
     
  3. 31. März 2011
    AW: Falsche Zeichenkodierung

    Ich verstehe nur Bahnhof

    Also das "SET NAMES ***" wird doch gemacht oder ? In der Datei steht zumindest

    Ich nutze ein CMS und habe wie gesagt nur die DB exportiert und nun wieder importiert. Auf beiden Servern rennt die gleiche MYSQL-Version.
     
  4. 31. März 2011
    AW: Falsche Zeichenkodierung

    MySQL-Dumper -> MySQL-Variablen
    oder
    phpMyAdmin -> Variablen

    Was steht da unter character_set_connection und character_set_client?
     
  5. 31. März 2011
    AW: Falsche Zeichenkodierung

    Dort steht folgendes

     
  6. 31. März 2011
    AW: Falsche Zeichenkodierung

    Hmm. Dann wird wohl der Zeichensatz des Dumps selbst latin1 / Cp1252 sein (auch wenn das "/*!40101 SET NAMES utf8 */;" eher dagegen spricht).

    Wenn du noch Zugriff auf den alten MySQL-Server hast, überprüf dort die Werte von "character_set_client" und "character_set_connection".
    Wenn nicht, überprüf die Kodierung des SQL-Dumps z.B. mt Notepad++.
    Ansonsten importier den Dump erneut, nur dieses Mal mit Windows-1252 / Cp1252 / Latin1 als Kodierung.
     
  7. 31. März 2011
    AW: Falsche Zeichenkodierung


    1.) ANSI as UTF-8 sagt Notepad++
    2.) Meinst du per SQLdumper und dann Cp1252 auswählen ?

    Auf dem alten Server war folgendes

    Unterscheidet sich also vom jetzigen :-/

    Edit meint:

    Also habe es per SQLdumper per Latin1 importiert. Nun werden an einigen Stellen die Sonderzeichen richtig dargestellt, aber an anderen ist es noch immer falsch :-/

    Habe nun mal geschaut direkt im dump und dort stehen die Wörter wie folgt

    wird dann aber falsch angezeigt :-/


    Edit² meint:

    Habe es nun durch die htaccess-Datei gelöst

    Funktioniert bisher perfekt !

    Danke für deine Hilfe
     
  8. 31. März 2011
    AW: Falsche Zeichenkodierung

    Das wird aber nicht lange funktionieren, denn neue Daten werden in UTF8 gespeichert. Das heißt:
    Alte Daten in latin1 -> werden korrekt dargestellt
    Neue Daten in utf8 -> werden falsch dargestellt

    Also das Problem jetzt nochmal komplett:
    Alter MySQL Server hat als Standardencoding latin1. Beim dumpen wurde anscheinend utf8 als Charset angegeben ( /*!40101 SET NAMES utf8 */; ) aber die Kodierung der Datei scheint trotzdem latin1 zu sein.

    Neuer MySQL Server hat als Standardencoding utf8.
    Versuch 1) Beim importieren wird utf8 als Charset verwendet. Resultat: Die als latin1 kodierten Daten werden für utf8-Daten gehalten und so gespeichert. Bei Abfragen mit utf8-Verbindungskodierung werden nun latin1 Daten übergeben, statt utf8 -> Falsche Sonderzeichen.

    Versuch 2) Beim importieren wird latin1 als Charset verwendet. Resultat: Die als latin1 kodierten Daten werden vor dem speichern nach utf8 konvertiert und danach gespeichert. Bei Abfragen mit utf8-Verbindungskodierung werden nun utf8 Daten übergeben. Aber wieso sind dennoch einige Sonderzeichen falsch? ?(
    -> Fehler beim Exportieren?


    Vorschlag: Wenn du noch Zugriff auf den alten MySQL-Server hast, exportier den Dump erneut, aber dieses Mal mit latin1 als Kodierung. Beim importieren muss der Charset dann natürlich auch latin1 sein.
     
  9. 1. April 2011
    AW: Falsche Zeichenkodierung

    Ich habe nur noch sehr begrentzt Zugriff per Web und FTP daher habe ich es mit diesem Script gemacht.

    Code:
    <?php
    system("/usr/bin/mysqldump -ubitweb -ppTZsyVHg -h localhost kundenportal_003_560_003 | gzip > ".dirname(__FILE__)."/dump.gz", $fp);
    if ($fp==0) echo "Daten exportiert"; else echo "Es ist ein Fehler aufgetreten";
    ?>
    
    Wie genau ich da nun als latin1 exportiere ist dann die nächste Frage ^^

    Edit meint:

    Habe was gefunden

    Habe das in meinen Code eingebaut aber bringt leider garnichts die Sonderzeichen sind noch immer falsch. Und es ist einfach stumpf weils im SQL-Dump eigentlich richtig steht

    Absoluter scheiss
     
  10. 1. April 2011
    AW: Falsche Zeichenkodierung

    Wie sehen die Sonderzeichen denn dann aus?

    Code:
    Ä = Ä
    Ö = Ö
    Ü = Ãœ
    ä = ä
    ö = ö
    ü = ü
    ß = ß
    oder überall Fragezeichen?
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.