Localhost / Server - Problem mit Umlauten

ImDoomed

Mitglied
Hallo ich hab da ein Prob. mit umlauten und zwar:

Meine XML Datei(als DB) ist in UTF-8 Codiert.

Ich habe eine Site in PHP geschrieben und auf "Localhost" sieht alles gut aus, nur online auf dem "Server" werden mir die umlaute verschoben.
Könnte mir wer helfen was des Prob ist?

Ich denk dass es irgendwo "falsch" gespeichert ist, aber da ich von Server noch nedd so viel plan hab, hab ich KA wo ich suchen sollte.

Mit freundlichem Gruß

Im'Doomed
 
Das erste Problem ist, dass PHP einen Bug hat, der die BOM einer UTF-8 kodierten Datei als Inhalt ansieht.
Zuerst musst du also dein PHP Script als UTF-8 ohne BOM speichern, das kann z.B. Notepad++ (Google findet bestimmt einen download dazu).

Wenn du dann noch auf MySql zugreifen willst, musst du bei der Verbindung zur DB angeben, dass du UTF-8 Daten lesen/schreiben willst, dazu machst du

Code:
mysql_connect("adresse","name","passwort");
mysql_query("SET names 'utf8'");
mysql_select_db("DBname");

Natürlich muss dann auch die DB auf UTF-8 eingestellt sein.

Als Letztes musst du dann im PHP Script im Header der HTML Ausgabe UFT-8 angeben, damit der Browser weiss, was er anzeigen soll.

Code:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">

...
 
Hi, danke für die ausführliche Antwort.

Notepad++ denk ich sollte jeder haben weil einfach nice is(habs schon 2 jahre).

Also ich hab den Code in UTF-8 ohne BOM konvertiert und extra nochmals einzeln als dieses gespeichert, natrülich beides mal online getestet. Im Notepad zeigt "er" mir die Daten als UTF-8 ohne BOM Codec an. Dennoch habe ich dass Prob dass es Local funktioniert aber Online nicht.

Es geht vorallem um die Daten aus der XML-Datei:
Code:
<?xml version="1.0" encoding="utf-8"?><!-- encoding="ISO-8859-1" alt//neu utf-8-->
<?xml-stylesheet type="text/css" href="../Css/schach.css"?>

Html schaut eigentlich richtig aus:
HTML:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Zur DB habe ich nur einen direkt link zur Verfügung (ist extern) zudem Werden diese Daten "Online" richtig dargestellt.
Was mich nun halt sehr verwirrt ist dass:

XML: Local / richtig || Online / falsch
DB: Local / falsch || Online / richtig

angezeigt wird.


Also wenn es Local falsch ist, dann ist mir des relativ egal.. Wichtig ist dass es Online stimmt. Könnte es mit dem PHP auf dem Server zusammen hängen? Habe da leider noch keine genaueren Daten erhalten. Local nutze ich XAMPP(unkonfiguiert).
 
Zuletzt bearbeitet:
Es liegt eine XML Datei auf dem Server, aus den Ich meine Daten ziehe.

Die XML Datei hat alle Daten welche auf der Website verwendet werden und diehnt somit als Datenbank. Der 1. Server hatte keine Datenbank deshalb habe ich mich für XML entschieden.



--- CUT ---
Das mit der DB ist nur eine Liste welche ich extern abrufe, diese hat mit der eigentlichen Site "fast" nichts zu tun.


Ich hoffe nun ist es bissle verständlicher. Und ich habe mit phpinfo() bissle rum gespielt und raus gefunden dass:

Server -> default_charset iso-8859-15
Local -> default_charset no value

Könnte dies mein Problem sein? Weil die XML-Daten ja Local alles richtig angezeigt werden?

OK das ist mein Fehler!

Ich habe nun kurzer Hand mein localen Server auf "default_charset iso-8859-15" eingestellt und "er" weist nun die gelichen Probs auf.
Weis wer was mim geschickter ist?
die phpini auf dem server ändern oder eher die XML so umarbeiten damit es funktioniert?
 
Zuletzt bearbeitet:
So habe die Lösung gefunden. Das Prob ist dass SimpleXML immer einen UTF-8 ausgibt egal was in der XML datei steht.

mit:
PHP:
echo utf8_decode($xml->content[0]->inhalt->blub);
wird alles richtig angezeigt. :-)

bei weiteren suchen bin ich dann auch auf diesen link(hier im Forum) gestoßen.

Ich wollten mich noch, für die Hilfe, bei der Fehlersuche bedanken.
 
Zurück