Vollständige Version anzeigen : Neue MYSQL Datenbank: Aus alter DB Daten und Struktur importiert: Umlaute werden fehlerhaft angezeigt


BladeFire
23.01.2015, 19:20

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 (;;;dropbox~com/s/rwaxqweoa01zssn/test1;sql?dl=0)

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: 1111;x) nicht drei mal hintereinander das erwartete 10;;x kommt.

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Murdoc
23.01.2015, 21:51

SET NAMES 'utf8'

Und Finger weg von mysql_***

PHP: Mysqli - Manual (;php~net/manual/en/book;mysqli;php)
PHP: PDO - Manual (;php~net/manual/en/book;pdo;php)


raid-rush
24.01.2015, 12:17

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');


BladeFire
26.01.2015, 15:23

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

hat geholfen,

Danke


iFone
29.01.2015, 19:05

Wo genau liegt denn der Unterscheid zwischen

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


Murdoc
30.01.2015, 12:34

SET NAMES 'utf8'

Stellt die Client<->Server Kommunikation auf UTF-8 um.
Im Grunde braucht man nur diesen Query.

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)


Ähnliche Themen zu Neue MYSQL Datenbank: Aus alter DB Daten und Struktur importiert: Umlaute werden fehlerhaft angezeigt
  • Warum werden manche Links bei den Posts fehlerhaft angezeigt
    Geht darum dass wenn man ein Thema erstellt und Links einfügt diese manchmal falsch angezeigt werden bzw. nicht funktionieren. Davor steht dann board;bitreactor;to... und dann der Link. Das liegt daran dass nur Links im ; Format akzeptiert werden. Auf manchen Seiten steht ja ;. oder auch gar nichts [...]

  • Laufwerke werden nicht angezeigt - Treiber fehlerhaft
    Tag Leute! Also meine beiden Laufwerke(dvd und dvd-brenner) werden seid gestern nicht mehr im Arbeitsplatz angezeigt. Im Gerätemanager siehts so aus: Und die Meldung steht wenn ich auf Eigenschaften bei einem Laufwerk klicke: Der Gerätetreiber für diese Hardware kann nicht geladen werden. [...]

  • FTP-Upload, Umlaute werden nicht angezeigt
    Hat jetzt zwar nicht direkt was mit der Programmierung zu tun, jedoch wüsste ich nicht, wo es sonst reinkommen sollte... So zu meinem Problem: Die upgeloadeten Seiten können keine (Ä,O,Ü,ß) anzeigen, es wird jediglich ein � angezeigt. Ich dachte ich müsste charset=utf-8 einstel [...]

  • Umlaute in UTF8 nach mysql Datenbank import
    hi ; all n kumpel von mir hat für uns ne seite erstellt, besser gesagt wir haben die alte ersetzt die neue hat er auf nem funpic server erstellt, dann die datenbank runtergeladen und alles auf den normalen server im richtigen datenbankformat hochgeladen ( utf8 ) jetz haben wir allerdings das [...]



raid-rush.ws | Imprint & Contact pr