Jump to content
comfuse

[gelöst]Nachricht zur Bestellung mit kaputten Umlauten

Recommended Posts

Hallo,

wir haben eine PS Installation migriert und dabei von der 1.6 auf eine 1.7.5.0 hochgehoben.

Hat soweit alles gut geklappt, nur gibt es ein paar Geburtswehen. Ich bin inzwischen
a) etwas ratlos, weil ich nicht mehr weiß, mit welchen Suchbegriffen ich hier operieren soll, um das Thema zu finden und
b) erstaunt, dass es das Problem scheinbar bei sonst niemandem gibt... aber gut, damit müssen wir gerade mal leben ;)

Im Checkout hat der Kunde die Möglichkeit, im Abschnitt "Versand" eine Nachricht an die Bestellung zu hängen. Die kommt leider im Backend mit kaputten Umlauten an, der Text ist also falsch kodiert. Bei den übernommenen Texten taucht dieses Problem nicht auf, sonst sind die Texte okay.

Einfache, wenn auch unschöne  Fragen:

- Ist das ein Datenbankproblem?

- Haben wir uns mit der fehlerhaften Codierung alles versaut?

- Kann man das noch retten (z.B. in der Klasse message.php die Kodierung umschreiben?) oder müssen wir von vorne anfangen?

Danke im Voraus für Eure Tipps, nun noch das Formale:

Serverdaten Linux #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019 x86_64

Version der Server-Software Apache/2.4.29 (Ubuntu)

PHP-Version 7.2.19-0ubuntu0.18.04.1

PrestaShop-Version 1.7.5.0

Danke

Carsten

 

Share this post


Link to post
Share on other sites
Posted (edited)

Nö, das liegt nicht an euch. Das ist mal wieder ein Bug in 1.7, der schon seit längerem bekannt ist. 

Öffne die classes/Tools.php und suche nach der Funktion function htmlentitiesUTF8.

Hier gibt es die Zeile

Quote

return htmlentities((string) $string, $type, 'utf-8');

Das änderst du in:

Quote

return htmlspecialchars((string) $string, $type, 'utf-8');

Dann sollten die Umlaute korrekt angezeigt werden.

Falls das nicht klappt, gäbe es auch die Möglichkeit, die Variable $message in der /classes/PaymentModule.php zu ändern. Statt

Quote

$customer_message->message = $update_message->message;

Müsste es dann heißen:

Quote

$customer_message->message = html_entity_decode($update_message->message, ENT_COMPAT, "UTF-8");

Letzteren Vorschlag hat am Samstag ein User bei Github gemacht, die erste Variante ist bei Prestashop für eines der kommenden Updates geplant, wurde aber schon mehrfach verschoben.

Edited by Wuschel (see edit history)

Share this post


Link to post
Share on other sites

Woohoo, danke für den schnellen Tipp! Wird getestet.

Carsten

Share this post


Link to post
Share on other sites

Hallo,

Variante 1 führte schon zum Erfolg, also htmlentities in htmlspecialchars umzuschreiben.

Nochmal merci.
Carsten

Share this post


Link to post
Share on other sites

Freut mich. Dann setz doch bitte auch den Topic auf [Gelöst], ja?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More