Neue MYSQL Datenbank: Aus alter DB Daten und Struktur importiert: Umlaute werden fehlerhaft angezeig

Dieses Thema im Forum "Webentwicklung" wurde erstellt von BladeFire, 23. Januar 2015 .

  1. 23. Januar 2015
    Zuletzt bearbeitet: 23. Januar 2015
    Hallo,

    seit ich einen neuen MYSQL-Datenbank anbieter habe, werden meine Umlaute nicht mehr Korrekt angezeigt. (Nur umlaute, die ich aus der Datenbank auslese. Wenn ich sie händisch in die Webseite eingebe, funktioniert alles.) In der Datenbank selbst, werden die umlaute Korrekt angezeigt.

    Statt den Umlauten, erscheint auf der Webseite ein Typisches Ersatzzeichen (aufgestelltes Viereck mit Fragezeichen). Der Text auf der Webseite sollte in utf-8 kodiert sein. (<meta charset="utf-8">)


    Hier die Daten des neuen MySQL-Servers:

    MySQL-Client-Version: mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $
    Server Version: 5.6.21-nmm1-log
    Protokoll-Version: 10
    MySQL-Zeichensatz: UTF-8 Unicode (utf8)

    Hier die Daten des alten MySQL-Servers:

    Server-Typ: MySQL
    Server-Version: 5.6.22 - MySQL Community Server (GPL)
    Protokoll-Version: 10
    Apache/2.4.7 (Ubuntu)
    Datenbank-Client Version: libmysql - 5.5.40
    Server-Zeichensatz: UTF-8 Unicode (utf8)

    _____________________
    Tabelleninfo: Type: InnoDB Kollation: utf8_general_ci

    Woran könnte es liegen, dass es nicht richtig angezeigt wird?


    Zusatzfrage1:

    Ich komme auf den neuen server nicht mehr mit phpmyadmin4 seit ich die "Koalition der Mysql-Verbindung" einmal auf utf8mb4_general_mysql500_ci geändert habe. (ich habe probiert die koalition in phpmyadmin3 wieder zurückzuändern, aber der fehler wird mir dennoch angezeigt.)

    Es wird mir nur noch folgendes angezeigt:
    _____________
    Fehler

    MySQL meldet: Dokumentation
    #1273 - Unknown collation: 'utf8mb4_general_mysql500_ci'
    _____________

    Zusatzfrage2:

    In der neuen Datenbank werden:
    "Neue Tabellen werden standartmässig im Format MyISAM angelegt"

    Während es in der alten standartmässig InnoDB war.

    hat dies einen Einfluß auf die Tabellen, obwohl ich diesen beim Typ "InnoDB" zugewiesen habe?

    Danke für eure Antworten


    UPDATE:

    Hier ist ein Link zur exportierten Datei (von meinem früheren Anbieter):
    Dropbox - test1.sql

    PS:
    mysql_client_encoding() gibt latin 1 aus. Ändere ich jedoch <meta charset=“utf-8“> auf <meta charset=“ISO 8859-1“> werden die Ös dennoch nicht richtig angezeigt.
    Dies ist verwunderlich.
    Ich habe es überprüft, die Daten von der Datenbank sind latin1 bzw. windows 1252 bzw iso 8859 kodiert.
    Ein in Latin 1 kodiertes „Ä“ und ein „¯“ danach ergeben in utf-8 ein komisches i. Die Ersatzeichen werden deshalb angezeigt, weil nach einem ö(in latin1 kodiert) (bitfolge: 1111xxxx) nicht drei mal hintereinander das erwartete 10xxxxxxx kommt.
     
  2. 23. Januar 2015
    AW: Neue MYSQL Datenbank || Aus alter Datenbank Daten und struktur Importiert || Folge: Umlaute werden fehlerhaft angezeigt

    Code:
    SET NAMES 'utf8'
    Und Finger weg von mysql_***

    PHP: Mysqli - Manual
    PHP: PDO - Manual
     
  3. 24. Januar 2015
    AW: Neue MYSQL Datenbank || Aus alter Datenbank Daten und struktur Importiert || Folge: Umlaute werden fehlerhaft angezeigt

    wenn es im phpmyadmin richtig angezeigt wird, liegt es nur an der ausgabe. evtl hast du im php-code auch irgend wo noch eine umwandlung drin oder wie murdoc sagt werden die daten nicht in utf8 verarbeitet sondern in dem systemstandart.

    vor den abfrage nach dem verbinden einmalig:

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


    manchmal hilft bei der verarbeitung auch die standard-zeichensatz zu ändern wenn im betriebsystem zb noch iso verwendet wird.


    setlocale(LC_ALL, 'de_DE.utf8');
    setlocale(LC_CTYPE, "de_DE.utf8");


    und natürlich prüfen das der header richtig gesendet wird und nicht nur der meta-tag.

    header('Content-Type: text/html; charset=utf-8');
     
  4. 26. Januar 2015
    AW: Neue MYSQL Datenbank || Aus alter Datenbank Daten und struktur Importiert || Folge: Umlaute werden fehlerhaft angezeigt

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

    hat geholfen,

    Danke
     
  5. 29. Januar 2015
    AW: Neue MYSQL Datenbank: Aus alter DB Daten und Struktur importiert: Umlaute werden fehlerhaft angezeigt

    Wo genau liegt denn der Unterscheid zwischen

    mysql_query("SET NAMES 'utf8' ");
    und
    mysql_query("SET CHARACTER SET 'utf8' ");
     
  6. 30. Januar 2015
    AW: Neue MYSQL Datenbank: Aus alter DB Daten und Struktur importiert: Umlaute werden fehlerhaft angezeigt

    Code:
    SET NAMES 'utf8'
    Stellt die Client<->Server Kommunikation auf UTF-8 um.
    Im Grunde braucht man nur diesen Query.

    Code:
    SET CHARACTER SET 'utf8'
    Prügelt dem Server ein, dass er in jedem Fall UTF-8 nutzen soll wenn es nicht anders definiert ist.
    D.h. wenn du verpasst hast deiner Datenbank ein charset zu geben wird dieses genutzt (und noch ein bisschen mehr)
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.