
- 1
- 2

UTF-8 Problem (MySQL + XHTML 1.0)
Hallo zusammen
Ich stehe kurz vor der Verzweiflung wegen eines Problems mit UTF-8 in Kombination mit MySQL und XHTML.
Man sehe sich meine Seite an: deleted (auf deutsch)
Alle Umlaute, welche aus der Datenbank kommen (die News-Einträge kommen aus der DB) werden falsch dargestellt. Oberhalb der Einträge steht derzeit "Test: ä ö ü" - diese Umlaute stehen genau so im Code der Webseite und werden trotzdem richtig dargestellt. Schaut man sich denn Quelltext der Seite im Browser an stellt man auch dort fest, dass die Umlaute aus der DB nicht richtig angezeigt werden - ich nehme daher an, dass Problem ist in der DB zu suchen.
In der DB ist die Collation aber überall auf "utf8_general_ci" gesetzt und auch phpMyAdmin zeigt alles korrekt an.
Ich weiss langsam nicht mehr wo ich noch suchen muss und wäre daher unendlich dankbar für einen kleinen denkanstoss. Vermutlich habe ich sowieso nur irgend etwas kleines übersehen...
Ich stehe kurz vor der Verzweiflung wegen eines Problems mit UTF-8 in Kombination mit MySQL und XHTML.
Man sehe sich meine Seite an: deleted (auf deutsch)
Alle Umlaute, welche aus der Datenbank kommen (die News-Einträge kommen aus der DB) werden falsch dargestellt. Oberhalb der Einträge steht derzeit "Test: ä ö ü" - diese Umlaute stehen genau so im Code der Webseite und werden trotzdem richtig dargestellt. Schaut man sich denn Quelltext der Seite im Browser an stellt man auch dort fest, dass die Umlaute aus der DB nicht richtig angezeigt werden - ich nehme daher an, dass Problem ist in der DB zu suchen.
In der DB ist die Collation aber überall auf "utf8_general_ci" gesetzt und auch phpMyAdmin zeigt alles korrekt an.
Ich weiss langsam nicht mehr wo ich noch suchen muss und wäre daher unendlich dankbar für einen kleinen denkanstoss. Vermutlich habe ich sowieso nur irgend etwas kleines übersehen...
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »seventhson« (2. Januar 2007, 14:37)
Zitat
Original von Skittles
hast du die daten auch als unicode in die db geschrieben, oder wurden die vielleicht als iso sonstwas reingeschickt?
Müsste schon unicode sein. Ich habe gestern die DB als Dump exportiert, komplett gelöscht und neu via phpMyAdmin importiert. Beim importieren in phpMyAdmin habe ich ebenfalls utf-8 angegeben - das müsste doch eigentlich reichen oder nicht?
Nachtrag:
Gerade fällt mir auf... unter "Concerts" kommen die Daten ebenfalls aus der selben MySQL-DB aber da existiert das Problem seit dem neuen Import der Daten nicht mehr. Sehr eigenartig...
Bitte keine Doppel / Mehrfachpostings!
siehe auch FAQ
Bitte benutze die Editierfunktion! mfg Lucius!
siehe auch FAQ
Bitte benutze die Editierfunktion! mfg Lucius!
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 |
function umlaute_ersetzen($text)
{
$text = ereg_replace("ä","ä",$text);
$text = ereg_replace("Ä","Ä",$text);
$text = ereg_replace("ü","ü",$text);
$text = ereg_replace("Ü","Ü",$text);
$text = ereg_replace("ö","ö",$text);
$text = ereg_replace("Ö","Ö",$text);
$text = ereg_replace("ß","ß",$text);
return $text;
}
|
Nutze diese Funktion mal dann sollte das funktionieren bei dir!
Greetz
MaxTPayne
Mein Problem hat aber nichts mit der Schreibweise von Umlauten in HTML zu tun, daher hilft mir diese Funktion nicht. Ausserdem werden die Umlaute anscheinend ja falsch aus der DB gelesen, daher kann die Funktion sowieso keine Umlaute finden.
Für die Website werde ich schlussendlich natürlich auch auf eine solche Funktion zurückgreiffen, damit ich valides XHTML ohne Umlaute erhalte. Im RSS-Feed funktioniert dies jedoch nicht - da müssen die Umlaute im Klartext und nicht HTML-Kodiert erscheinen.
Für die Website werde ich schlussendlich natürlich auch auf eine solche Funktion zurückgreiffen, damit ich valides XHTML ohne Umlaute erhalte. Im RSS-Feed funktioniert dies jedoch nicht - da müssen die Umlaute im Klartext und nicht HTML-Kodiert erscheinen.
Zitat
Original von seventhson
Mein Problem hat aber nichts mit der Schreibweise von Umlauten in HTML zu tun, daher hilft mir diese Funktion nicht. Ausserdem werden die Umlaute anscheinend ja falsch aus der DB gelesen, daher kann die Funktion sowieso keine Umlaute finden.
Türlich hat die etwas damit zu tun... Mach das einfach mal denn ich habe genau das gleiche "Problem" gehabt und deshalb hab ich mir diese kleine Funktion geschrieben. Ich habe die Umlaute auch nicht verändert gespeichert und trotzdem hat es mit dieser Funktion geklappt!
Greetz
MaxTPayne
Nein hat es nicht. Schau dir doch mal den RSS-Feed an: deleted
und am besten auch dessen Quelltext. Sogar im Quelltext werden die Umlaute nicht richtig dargestellt.
Und hier mal ein Ausschnitt aus dem Quelltext der Seite selbst:
Die erste Zeile ist Hardcoded. Der Paragraph kommt aus der DB.
Auf der Seite Concerts hole ich ebenfalls Daten mit Umlauten aus der DB. Da funktionierts problemlos.
Ausserdem verwende ich derzeit bereits eine solche funktion - nützt aber auch nix
und am besten auch dessen Quelltext. Sogar im Quelltext werden die Umlaute nicht richtig dargestellt.
Und hier mal ein Ausschnitt aus dem Quelltext der Seite selbst:
|
|
Quellcode |
1 2 3 |
<p>Test: ä ö ü</p> <h1>Neue Website</h1> <p>Ab sofort pr�sentiert sich euch disillusionroad.ch in einem komplett neuen Design. Auch am Seitenaufbau wurde einiges ge�ndert. |
Die erste Zeile ist Hardcoded. Der Paragraph kommt aus der DB.
Auf der Seite Concerts hole ich ebenfalls Daten mit Umlauten aus der DB. Da funktionierts problemlos.
Ausserdem verwende ich derzeit bereits eine solche funktion - nützt aber auch nix
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »seventhson« (2. Januar 2007, 14:38)
Zitat
Original von maxtpayne
Wenn das keine Lösung ist dann speicher die Umlaute direkt "umgewandelt" in der DB dann hast Du damit auch keine Probleme ...
Daran habe ich auch schon gedacht, doch diese Lösung ist mir irgendwie zu hässlich.
Ausserdem müsste ich die umgewandelten Umlaute dann für den RSS-Feed wieder in "normale" Umlaute umwandeln.
Zitat
Original von seventhson
Zitat
Original von maxtpayne
Wenn das keine Lösung ist dann speicher die Umlaute direkt "umgewandelt" in der DB dann hast Du damit auch keine Probleme ...
Daran habe ich auch schon gedacht, doch diese Lösung ist mir irgendwie zu hässlich.
Ausserdem müsste ich die umgewandelten Umlaute dann für den RSS-Feed wieder in "normale" Umlaute umwandeln.
"hässlich" naja Ansichtsache aber das mit dem RSS ist doch nur ne Programmier sache. Ich denke mal das dein RSS-Feed automatisch generiert wird dann lass doch bei diesem generieren das "umwandeln" einfach weg!
Greetz
MaxTPayne
Naja, ich fänd das jedenfalls mehr als hässlich.
Vor allem verwundert mich, dass es in der eine MySQL-Tabelle klappt und in der anderen nicht.
Nachtrag:
Hmmmm jetzt bin ich aber wirklich verwirrt - mit htmlentities funktionierts aber mit einem Umlaute-Replace-Script wie das von oben nicht. htmlentities ist aber auch keine Lösung, weil ich zum teil HTML in die Tabelle schreiben muss (Links etc.)
Vor allem verwundert mich, dass es in der eine MySQL-Tabelle klappt und in der anderen nicht.
Nachtrag:
Hmmmm jetzt bin ich aber wirklich verwirrt - mit htmlentities funktionierts aber mit einem Umlaute-Replace-Script wie das von oben nicht. htmlentities ist aber auch keine Lösung, weil ich zum teil HTML in die Tabelle schreiben muss (Links etc.)
Bitte keine Doppel / Mehrfachpostings!
siehe auch FAQ
Bitte benutze die Editierfunktion!
Beim nächsten Mal wird kommentarlos gelöscht! mfg Lucius!
siehe auch FAQ
Bitte benutze die Editierfunktion!
Beim nächsten Mal wird kommentarlos gelöscht! mfg Lucius!
Zitat
Original von maxtpayne
Was meinst du mit HTMLEntities?
http://www.php.net/htmlentities
Zitat
Und was für ein Umlaut-Replace Script?!? Wie wendest Du das?
Zitat
Original von seventhson
einem Umlaute-Replace-Script wie das von oben
Also genau dem selben wie du oben gepostest hast, ausser dass die Funktion anders heisst.
Meine Güte reg dich ab.
Ich rufe die Funktion richtig auf. Wenn ich die Funktion z.B. so modifiziere, dass sie mir alla "a"'s durch "b"'s ersetzt klappt das wunderbar, wenn ich aber Umlaute ersetzen will macht sie anscheinend gar nichts.
Ich hab nicht erst gestern angefangen, mich mit PHP zu beschäftigen und weiss daher, wie man in PHP Funktionen aufruft - daher liegts also bestimmt nicht.
Ich rufe die Funktion richtig auf. Wenn ich die Funktion z.B. so modifiziere, dass sie mir alla "a"'s durch "b"'s ersetzt klappt das wunderbar, wenn ich aber Umlaute ersetzen will macht sie anscheinend gar nichts.
Ich hab nicht erst gestern angefangen, mich mit PHP zu beschäftigen und weiss daher, wie man in PHP Funktionen aufruft - daher liegts also bestimmt nicht.
Zitat
Original von seventhson
Meine Güte reg dich ab.
Ich rufe die Funktion richtig auf. Wenn ich die Funktion z.B. so modifiziere, dass sie mir alla "a"'s durch "b"'s ersetzt klappt das wunderbar, wenn ich aber Umlaute ersetzen will macht sie anscheinend gar nichts.
Ich hab nicht erst gestern angefangen, mich mit PHP zu beschäftigen und weiss daher, wie man in PHP Funktionen aufruft - daher liegts also bestimmt nicht.
Dann Speicher die halt vorher "umgewandelt" ab dann funktionierts auch...
Greetz
MaxTPayne
hast du schon mal die funktionen utf8-decode und utf8-encode() ausprobiert?
PS: verschoben nach PHP.
PS: verschoben nach PHP.
Über mich: www.heinervdm.de
Persönlich Mitteilungen an mich bitte als PN (nicht Email) hier im Forum. ICQ und Skype bitte nur in Notfällen.
Persönlich Mitteilungen an mich bitte als PN (nicht Email) hier im Forum. ICQ und Skype bitte nur in Notfällen.

- 1
- 2



