#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. 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 + Multi-Zitat Zitieren
#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 ***) + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#10 1. April 2011 AW: Falsche Zeichenkodierung Wie sehen die Sonderzeichen denn dann aus? Code: Ä = Ä Ö = Ö Ü = Ãœ ä = ä ö = ö ü = ü ß = ß oder überall Fragezeichen? + Multi-Zitat Zitieren