Umlaute/Charset Problem nach Wechsel auf XAMPP 1.8.3

Irgendwelche Probleme mit XAMPP für Linux? Dann ist hier genau der richtige Ort um nachzufragen.

Umlaute/Charset Problem nach Wechsel auf XAMPP 1.8.3

Postby seelem » 04. October 2013 21:50

Hallo zusammen,

ich verwende XAMPP auf meinem Rechner als Entwicklungssystem für eine Webseite, die auf einem externen Server läuft.
Ich habe kürzlich meinen Rechner neu aufgesetzt (von Ubuntu 10.4 LTS auf 12.4 LTS). In diesem Zug habe ich von XAMPP 1.7 auf 1.8.3 gewechselt.
Dazu habe ich die PHP-Dateien 1:1 kopiert und die MySQL Datenbank mittels Exportieren vom externen Server aus phpMyAdmin und Import in phpMyAdmin auf XAMPP übertragen. So weit klappt auch alles.

Mit XAMPP 1.8.3 habe ich nun folgendes Problem: Umlaute werden als Fragezeichen dargestellt, und zwar genau die die aus der MySQL Datenbank kommen. Dies tritt nicht auf dem externen Server auf.

Die typischen Charset-Probleme habe ich überprüft:
Meine HTML Syntax weist <meta http-equiv="content-type" content=" http-equ; charset=UTF-8" > auf, Firefox interpretiert dies auch richtig (wird in den Zeichenkodierungen entsprechend ausgewählt)
Die Einstellungen des Datenbank Servers lt. phpMyAdmin ist: "Server Zeichensatz: UTF-8 Unicode (utf8)".
Die Einstellungen Zeichensatz/Kollation der MySQL-Verbindung lt. phpMyAdmin ist: "utf-8_general_ci".
Die Kollation meiner Datenbank ist "utf-8_general_ci".
Alle oben genannten Punkte sind auf dem externen Server und auf lokalem XAMPP 1.8.3 gleich.
Es bringt nichts die XAMPP php.ini zu ändern bei den default-charset und mysql-charset (von "no value" auf "utf-8).

Wenn ich Firefox bei der Ansicht des XAMPP Servers manuell auf ISO-8859-1 umstelle, werden die Zeichen richtig dargestellt: aus den Fragezeichen werden die richtigen Umlaute.
Wenn ich Firefox bei der Ansicht des externen Servers manuell auf ISO-8859-1 umstelle, werden die Zeichen falsch dargestellt: aus den richtigen Umlauten werden falsche Zeichen (z.B. aus ü wird ü).

Es scheint auch mehr als ein Darstellungsproblem zu sein: ich habe Datenbanktabellen mit Umlauten drin (ob das jetzt generell clever ist oder nicht sei mal dahingestellt - ich habe diese vollendeten Tatsachen so bekommen), diese Tabellen werden von den PHP-Skripten nicht mehr gefunden obwohl sie natürlich da sind (1:1 Kopie des externen Servers). Also such PHP mit "anderen Umlauten" als in mySQL gespeichert.

Nach meinen bisherigen Lösungsversuchen gehe ich davon aus, dass von XAMPP 1.7 auf 1.8.3 Einstellungen geändert wurden, die ich aber nun nicht finde.
Leider kann ich nicht zurück auf 1.7, da ich die Ubuntu 12.4 Version als 64bit installiert habe und XAMPP anscheinend erst ab der 1.8.2 Version mit 64bit arbeiten kann.

Zusammenfassung des Problems:
Umlaute werden unter XAMPP 1.8.3 falsch dargestellt, dies war noch in Ordnung unter XAMPP 1.7. Es gibt auch kein Problem beim externen Server, von dem ich die Daten 1:1 kopiert habe.

Welche Einstellungen könnten geändert worden sein?
An welcher Schraube könnte ich nun noch drehen?

Viele Grüße
seelem
seelem
 
Posts: 2
Joined: 04. October 2013 21:18
Operating System: Linux

Re: Umlaute/Charset Problem nach Wechsel auf XAMPP 1.8.3

Postby Altrea » 04. October 2013 22:59

Hallo seelem,

Wenn sowohl die Dateien in utf-8 codiert sind, als auch interpretiert werden und auch die Datenbank die Daten als utf-8 gespeichert hat, dann bleibt als einzige Stelle die Datenbankverbindung. Vermutlich spezifiziert deine Datenbankverbindung nicht die Zeichenkodierung.

Da ich nicht weiß, welchen Datenbank-Treiber du verwendest, ein paar Ressourcen:

http://www.php.net/manual/en/function.m ... harset.php
http://de.php.net/manual/en/mysqli.set-charset.php
http://www.php.net/manual/en/ref.pdo-my ... ection.php

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Umlaute/Charset Problem nach Wechsel auf XAMPP 1.8.3

Postby seelem » 05. October 2013 13:45

Hallo Altrea,

du hast mir mit den Links die richtigen Hinweise gegeben. Problem ist gelöst. :D

Ich habe im PHP Skript nach dem Verbindungsaufbau folgende Zeile ergänzt:
Code: Select all
mysql_set_charset("utf8");

Danach hat es funktioniert.
Mit der Funktion
Code: Select all
mysql_client_encoding()
habe ich auch noch ausprobiert, wie das Charset vorher ohne den neuen Befehl war: es war "latin1". Daher wurde es dann vom Browser falsch interpretiert (egal was ich im PHP Skript definiert habe oder als was die PHP-Datei kodiert war).
Ich lasse diese Zeile dann auch besser auf dem externen Server mitlaufen, wer weiß ob da nicht auch mal generelle Einstellungen geändert werden.

Dies hat bei mir generelle Fragen aufgeworfen:

1. Ich habe in deinen Quellen gelesen, dass man auch globale Einstellungen in der "my.cnf" Datei ändern kann. Ich habe das jetzt nicht ausprobiert weder die Datei gesucht, aber wurde hier von XAMPP 1.7 auf 1.8.3 etwas geändert?
Da ich nicht genau weiß, wie der externe Server eingestellt ist, ist mir die Ergänzung in meinem Skript lieber.

2. Der erste deiner Links beschreibt, das "mysql_set_charset" nicht mehr empfohlen ist und bald aus PHP verschwindet. Man solle bereits jetzt die MySQL Improved Extension verwenden. Kann ich anschließend nicht mehr mit "mysql_connect" arbeiten? Dann müsste ich eine Menge bei mir umstellen. In welchem Zeitrahmen wird hier bei der PHP Entwicklung gedacht? Wird das jetzt noch 1 Jahr dauern bis die extension nicht mehr unterstützt wird, oder wird dies eher 5 Jahre noch toleriert werden, obwohl nicht mehr empfohlen?

Auf jedenfall vielen Dank für die schnelle Hilfe.
Das ist ja das tolle an XAMPP, dass man sich eigenlich über solche Dinge wie Datenbanktreiber keine Gedanken machen muss (hier hab ich auch keine Ahnung) und sich einfach auf das Programmieren der Webseite konzentrieren kann. Daher auch vielen Dank an das ganze XAMPP Team!

Viele Grüße
seelem
seelem
 
Posts: 2
Joined: 04. October 2013 21:18
Operating System: Linux

Re: Umlaute/Charset Problem nach Wechsel auf XAMPP 1.8.3

Postby Nobbie » 05. October 2013 13:49

>Kann ich anschließend nicht mehr mit "mysql_connect" arbeiten? Dann müsste ich eine Menge bei mir umstellen. In welchem Zeitrahmen wird hier bei der PHP Entwicklung gedacht? Wird das jetzt noch 1 Jahr dauern bis die extension nicht mehr unterstützt wird, oder wird dies eher 5 Jahre noch toleriert werden, obwohl nicht mehr empfohlen?

So weit ich gehört habe, wird ab PHP 5.6 die mysql-API verschwinden. Das dürfte sich um weniger als ein paar Jahre handeln.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Umlaute/Charset Problem nach Wechsel auf XAMPP 1.8.3

Postby Altrea » 05. October 2013 14:59

seelem wrote:1. Ich habe in deinen Quellen gelesen, dass man auch globale Einstellungen in der "my.cnf" Datei ändern kann. Ich habe das jetzt nicht ausprobiert weder die Datei gesucht, aber wurde hier von XAMPP 1.7 auf 1.8.3 etwas geändert?
Da ich nicht genau weiß, wie der externe Server eingestellt ist, ist mir die Ergänzung in meinem Skript lieber.

MySQL hat in dieser Zeit zum Beispiel den Besitzer gewechselt, PHP hat große Versionssprünge vollzogen, ... Also ja, es hat sich eine Menge verändert.
Es ist immer anzuraten die erwartete Zeichenkodierung im Skript festzulegen.

seelem wrote:2. Der erste deiner Links beschreibt, das "mysql_set_charset" nicht mehr empfohlen ist und bald aus PHP verschwindet. Man solle bereits jetzt die MySQL Improved Extension verwenden.

Ich würde sogar eher zu PDO raten, da du da zusätzlich eine Datenbankabstraktionsschicht dazwischen hast und so zumindest theoretisch eine SQL Datenbank gegen eine andere austauschen kannst ohne groß etwas am Code zu ändern (in der Praxis ist es freilich nicht immer ganz so einfach). Außerdem ist PDO komplett Objektorientiert wärend MySQLi immernoch auch eine prozedurale Möglichkeit offen lässt. Manche Codeabschnitte erscheinen mir in PDO auch einfach durchdachter als bei mysqli, aber letztendlich ist es Geschmackssache.

seelem wrote:Kann ich anschließend nicht mehr mit "mysql_connect" arbeiten? Dann müsste ich eine Menge bei mir umstellen.

Nein, aber mit mysqli_connect. Die meisten mysql_ Funktionen haben einfach ein zusätzliches i bekommen. Das bedeutet dass du mit einem halbwegs leistungsstarken Editor und der Suchen und Ersetzen Methode über Dateien hinweg schon in kurzer Zeit gute Ergebnisse erzielen kannst. Der Umstieg zu mysqli_ ist somit um einiges leichter als zu PDO.

seelem wrote:In welchem Zeitrahmen wird hier bei der PHP Entwicklung gedacht? Wird das jetzt noch 1 Jahr dauern bis die extension nicht mehr unterstützt wird, oder wird dies eher 5 Jahre noch toleriert werden, obwohl nicht mehr empfohlen?

Neue PHP Versionen sind in letzter Zeit so im Zeitrahmen von ca. 1,5 bis 2 Jahren erschienen. Dies ist aber kein harter Schnitt. Die PHP Version 5.5 wird noch eine ganze Zeit neben PHP 5.6 oder PHP 6 (wie die nächste PHP Version auch immer heißen mag) unterstützt und gebugfixt.
Sieht man sich große populäre PHP Skripte an, hängen sie meist sowieso in der Unterstützung mindestens eine Minor Version hinter der aktuellen PHP Entwicklung zurück.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64


Return to XAMPP für Linux

Who is online

Users browsing this forum: No registered users and 20 guests