Klaus: Probleme mit Kollation

Beitrag lesen

Hallo,

vielen Dank für Deine Unterstützung.

Vor einigen Tagen hab ich die Webseiten (und DBs) auf einen neuen Server gebracht.
Das heisst, ich hab auch gleich den Apache, PHP und MySQL aktualisiert, hab aber die Webseiten und die DBs schlicht auf den neuen Server kopiert.

Genauere Angaben, über dein Vorgehen als du den MySQL-Server mit den alten Daten versorgt hast, wären schon hilfreich, denn daraus kann man eventuell erkennen, was du richtig oder falsch gemacht hast.

Ich hab den neuesten XAMP installiert. Hab die httpd angepasst. Ich  hab die Dateien (Webseiten) in das htdocs kopiert. Ich hab die Datenbanken und Tabellen als Dateien ins MySQL-Data-Verzeichnis des neuen Servers kopiert.

Zunächstmal kann ich mit dem Phpmyadmin nicht mehr suchen, der hängt mir bei jeder Suche ein Convert dran:

Was zeigt der PMA auf seiner Startseite an, welche Kodierung er verwendet? Was ist im Server eingestellt (Was zeigt die Seite System-Variablen für die "character set ..."-Werte an?)

SELECT * FROM wissen WHERE titel LIKE CONVERT( _utf8 'fixup' USING [???]) LIMIT 0 , 30

SELECT * FROM wissen WHERE titel LIKE CONVERT( _utf8 'fixup'
USING latin1 ) LIMIT 0 , 30

Ich weiß nicht, warum er überhaupt convert benutzen möchte und warum überhaupt _utf8?? Bei der Tabelle steht latin1_general_ci, das wohl standardmäßig genommen wird, da die Info bisher nicht in der Tabelle steht.

Vermutlich will er das, weil es Unterschiede zwischen ihm und dem Server in der verwendeten Kodierung gibt.

In der My.cnf steht
character-set-server = latin1
collation-server = latin1_general_ci
Die Tabellen stehen alle auf latin1_general_ci.

Lasse ich mir den Inhalt der Tabelle anzeigen, werden in den BLOB-Feldern die deutschen Umlaute nicht korrekt dargestellt.

Es gibt viele Arten von "nicht korrekt". Wie genau sieht deine aus?

Die deutschen Umlaute werden mit Sonderzeichen dargestellt (das 'ü' ist beispielsweise eine kleine schwarze Raute mit einem Fragezeichen drin)

Vielleicht hast du auch nur nicht beachtet, die auf deinen Datenbankverbindungen zu verwendende Kodierung explizit auszuhandeln (SET NAMES ... oder besser mit der Funktion mysql_set_charachter_set() bzw. deren Pendant in der verwendeten Umgebung (beispielsweise mysqli in PHP5)).

Die meisten meiner Tabellenabfragen funktionieren wunderbar und anstandslos. Lediglich der Phpmyadmin bei der 'LIKE'-Suche und meine Php-Scripte bei der Suche innerhalb von BLOB-Feldern.

Ich hoffe, der Beitrag ist nicht bereits zu weit runtergerutscht und findet noch Beachtung.

Klaus