Seite 1 von 1

Probleme Zeichenkodierung nach Umstellung auf UTF-8

Verfasst: 07.03.2013, 23:49
von TOPGESCHENKEWELT
Ich habe meinen XT-Commerce-Shop umgestellt von iso auf UTF-8, aber hier gibt es nun ein paar Probleme bezüglich der Zeichenkodierung von Umlauten.
Der Seiteninhalt ist in utf-8 und auch die Datenbank ist komplett in UTF-8.

Bei dem Title in der Browser-Url tauchen komische Zeichen und Entities auf. Diese werden leider nicht in utf-8 ausgegeben.

Hier nun ein Link, wo man diese falschen Umlaute in der Browserurl sieht:
https://www.topgeschenkewelt.de/product ... ntopf.html

Woran könnte das denn liegen? :roll:

Verfasst:
von

Verfasst: 08.03.2013, 11:33
von HW
..so eine Shopwebsite besteht aus vielen Templates, Du musst nun herausfinden, in welchem Template das HTML für die Meta-Tags generiert wird. Dieses Template musst Du in einem Editor öffnen und neu abspeichern (ohne Änderung) - mit der "Dateicodierung UTF-8". Wenn das Template schon mal unachtsam unter der Dateicodierung Ansi abgespeichert wurde, kommt es zu diesem Fehler. Es gibt einige frei verfügbare Editoren die das Abspeichern mit der Dateicodierung UTF-8 ermöglichen - ich glaube sogar Notepad kann das.

Gruß
HW

Verfasst: 08.03.2013, 11:50
von proit
Ich gehe mal davon aus, dass es ein Linux Server ist. Mit iconv kannst das Format einfach konvertieren.

Verfasst: 08.03.2013, 12:06
von Melegrian
Bei den Meta-Tags sehe ich nichts. Betrifft, nach dem was ich sah, nur die Titel und die sind in der DB sauber enthalten?

Code: Alles auswählen

Plüsch-Radio
Bin mir gerade nicht schlüssig, doch nur eine falsch abgespeicherte Datei würde eigentlich nicht à und ¼ ausgeben, sondern stattdessen Glyphen darstellen, was hier aber nicht der Fall ist. In Verbindung mit DOM sah ich aber eine derartige Ausgabe schon. Was mit Sicherheit nicht an DOM lag, sondern an einer unsauberen Konvertierung oder so, die PHP ohne DOM geschluckt hätte.

Verfasst: 08.03.2013, 12:44
von TOPGESCHENKEWELT
Danke für die Antworten.
@Melegrian
Ja richtig betrifft den Titel. Habe ich nun in meinem Anfangsposting geändert.
Es ist aber auch im Kategorien-Link so, z.B. Kategorie Schlüsselketten:
https://www.topgeschenkewelt.de/index.p ... etten.html

Ich habe einen Apache-Server und in der Datenbank ist auch alles ok.
Gestern abend habe ich eine Test gemacht:
Bei phpmyadmin bin ich in der Tabelle product_description, wenn ich
dort manuell bei products_name Plüsch-Radio in Plüsch-Radio,
dann wird es im Shop richtig angezeigt.

Vielleicht kann man mir anhand dieses Tests mehr zu diesem Phänomen sagen

Verfasst: 08.03.2013, 14:13
von TOPGESCHENKEWELT
Für das Title-Tag hier auch mal meine metatags.php

<title><?php $_SESSION['page_desc'] = htmlentities($meta_title); echo $_SESSION['page_desc'];?></title>

Ich denke mal, dass diese entsprechend angepasst werden muss, aber wie?

Verfasst: 08.03.2013, 18:18
von Melegrian
Ändert sich etwas, wenn Du mal statt htmlentities htmlspecialchars verwendest? Für beide gilt:
Standardwert ist ISO-8859-1 in PHP Versionen vor 5.4.0 und UTF-8 in PHP 5.4.0 und neuer.
https://php.net/manual/de/function.htmlentities.php

Oder auch mal so probieren:

Code: Alles auswählen

htmlentities&#40;$meta_title, ENT_QUOTES, "UTF-8"&#41;;

Verfasst: 08.03.2013, 18:28
von TOPGESCHENKEWELT
Hallo,
nein, leider keine Änderung.
Standardwert ist ISO-8859-1 in PHP Versionen vor 5.4.0 und UTF-8 in PHP 5.4.0 und neuer.
Liegt dies dann an meiner PHP-Version?
Bin nämlich bei 1&1 da steht MySQL5.0

Verfasst: 08.03.2013, 18:48
von Melegrian
Nein, eigentlich nicht, hätte nur sein können, dass htmlentities da mehr umwandelt als erforderlich. Die Werte für $meta_title kommen ja irgendwoher und auf dem Weg von Datenbank bis zur Ausgabe ist irgendetwas wie es nicht sein sollte.

U+00BC ist zum Beispiel &frac14; als HTML-Entitie:

https://www.utf8-zeichentabelle.de/unic ... ?htmlent=1

Doch warum das so umgewandelt wird, keine Ahnung, nehme aber an, dass unterwegs etwas doppelt kodiert wird oder so.

Verfasst: 08.03.2013, 21:08
von TOPGESCHENKEWELT
Ich bin nach dieser Anleitung hier vorgegangen:

https://www.reitenschwimmenlesen.de/blo ... umstellen/

Hat einer noch eine Idee, was ich tun kann?

Verfasst: 09.03.2013, 12:30
von Melegrian
Eine richtige Idee habe ich nicht, weil der Fehler ja irgendwo im Detail liegt. Je nachdem, wie viel Erfahrung Du besitzt, würde ich aber mal den Titel aus der Datenbank mit einer einzelnen Testseite abfragen.

Das, was jetzt ausgegeben wird, sind ja HTML-Entities für Glyphen wie ü und ein Notbehelf wäre, Entities und Glyphen von Umlauten in einer Funktion in Umlaute zu verwandeln. Das wäre aber nur ein Notbehelf für die Ausgabe und würde das eigentliche Übel nicht beseitigen.

Weiter oben wurde von HW bereits erwähnt, dass eventuell eine Datei zu UTF-8 konvertiert werden müsste. Wenn ich nun eine beliebige PHP Seite nehme, darin einen String mit Umlauten einfüge "ÄäÖöÜüß", die Datei im Notepad++ erst "Konvertiere zu UTF-8 ohne BOM" und dann speichere, dann ist es gut. Aber wenn ich dann beim erneuten öffnen die Ansicht von UTF-8 nach ANSI wechsle, dann sehe ich die Umlaute als Glyphen: "ÄäÖöÜüß"

Bei Dir geht es nun noch einen Schritt weiter, da werden die Glyphen zusätzlich noch in HTML-Entities verwandelt. Also müsste da vielleicht wirklich noch eine Datei zu UTF-8 konvertiert werden oder es wird etwas doppelt kodiert oder wie auch immer. Hier lief auch mal ein Thread mit einem Umlautproblem, da war es eine simple Umstellung der Datenbank-Abfrage.

Edit: meinte diesen Thread:
KarakTzorn hat geschrieben:

Code: Alles auswählen

$db->query&#40;"SET NAMES 'utf8' COLLATE 'utf8_general_ci'"&#41;;
https://www.abakus-internet-marketing.d ... p?t=110599

Könnte auch einen Hinweis liefern:

https://www.abakus-internet-marketing.d ... hp?t=79775

Verfasst: 09.03.2013, 14:21
von TOPGESCHENKEWELT
Vermutlich liegt es an meiner ziemlich alten XT-Commerce-Version (ca. 7 Jahre alt). Wie ich auch gestern von meinem Provider erfahren habe, wird diese ab Oktober dann definitiv nicht mehr laufen aufgrund der PHP-Umstellung.
Somit ist für mich ohnehin eine neuere Version fällig.
Ich gehe davon aus, dass sich dann mein Problem ohnehin erledigt.

Entweder dann modified 1.06 oder ne andere XT-Commerce-Version, z.B. 4er.

Vielleicht kann mir ja jemand mehr dazu sagen, der hier so eins im Einsatz hat.