vcdwelt
Goto Top

Immer wiederkehrende PHP Fehlermeldung bei Wordpress UTF-8 - ASCII

Hi,
seit einiger Zeit wird mein error_log meines Wordpress Blogs mit immer der gleichen Fehlermeldung überschwemmt.

[14-Dec-2017 08:18:05 UTC] PHP Warning: html_entity_decode(): charset `ASCII' not supported, assuming utf-8 in /home/xxxx/vcdwelt.de/wp-includes/formatting.php on line 5124

Und ich habe nicht die geringste Idee wie ich das behoben bekomme face-sad

Line 5124 aus der formatting.php:

$emoji_char = html_entity_decode( $emojum );


Vielleicht kann mir da jemand behilflich sein face-smile

Content-Key: 358177

Url: https://administrator.de/contentid/358177

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: eisbein
eisbein 14.12.2017 um 09:47:43 Uhr
Goto Top
Hallo!

Stammt die Datei formatting.php von Wordpress oder von dir?

html_entity_decode () ist das Gegenstück zu htmlentities () - Welchen Inhalt hat die Variable $emojum und woher kommt deren Inhalt?

Welche PHP und Wordpress-Version?

Gruß
eisbein
Mitglied: Voiper
Voiper 14.12.2017 um 09:48:36 Uhr
Goto Top
Hi,

Siehe Wordpress Referenz:
https://codex.wordpress.org/Function_Reference/wp_encode_emoji

This function will convert any 4 byte emoji in a string to their equivalent HTML entity and return it. It uses the PHP function 'mb_convert_encoding' to do the real converting. The main purpose of this function is for installs with a database which uses the 3 byte 'utf8' encoding to still be able to store emoji characters. Since WordPress 4.2 most databases will be converted to 4 byte collations with 'utf8mb4'.

Du nutzt in deiner Datenbank also vermutlich das 3 byte utf8-encoding und daher greift die Funktion und codiert die Emojis zu HTML/ASCII

Gruß, V
Mitglied: vcdwelt
vcdwelt 14.12.2017 aktualisiert um 11:00:22 Uhr
Goto Top
Die Datei formatting.php stammt von Wordpress. Es ist Version 4.9.1

Habe auch schon Wordpress neu installiert und ein Backup meiner Beiträge zurückgespielt. Leider immer noch der gleiche Fehler.

Das in der Wordpress Referenz hatte ich auch schon gefunden, aber mir ist nicht ganz klar wie ich das nun bereinigt bekommen kann.
Mitglied: Voiper
Voiper 14.12.2017 um 11:34:40 Uhr
Goto Top
Zwischenfrage: Betreust du den Webserver und die Datenbank selbst?
Mitglied: vcdwelt
vcdwelt 14.12.2017 aktualisiert um 11:56:13 Uhr
Goto Top
Nein, habe ein Webspace Paket. Dort ist Wordpress über deren eigenen Scriptinstaller installiert.
Datenbank hat wordpress automatisch bei der installation angelegt.
Mitglied: eisbein
eisbein 14.12.2017 aktualisiert um 12:52:59 Uhr
Goto Top
Hallo!

Ändere testweise deine Zeile 5124

$emoji_char = html_entity_decode( $emojum );

in

$emoji_char = html_entity_decode( mb_convert_encoding($emojum , 'UTF-8'));   

Somit wird $emojum zwingend in UTF-8 convertiert.

Gruß
eisbein


Edit: Interessant wäre der Inhalt der Variable $emojum dennoch.. ebenso die PHP-Version
Mitglied: vcdwelt
vcdwelt 14.12.2017 aktualisiert um 13:07:33 Uhr
Goto Top
Änderung leider erfolglos face-sad
Fehlermeldung kommt weiterhin.
11833 mal im Log. Alle mit dem gleichen Timestamp.

Wie komme ich denn an Inhalt der Variable? Hab von PHP nahezu keinen Plan.

PHP Version 5.6.32
Mitglied: eisbein
Lösung eisbein 14.12.2017 aktualisiert um 13:30:37 Uhr
Goto Top
PHP Version 5.6.32

Schau zuerst ob du PHP aktualisieren kannst - Version 7.1

Ausgaben werden in PHP mittels
echo $emojum;
erzeugt.
Wenn die betreffende Zeile aber innerhalb einer Funktion steht, wird das nichts bringen.

Gruß
eisbein
Mitglied: eisbein
eisbein 14.12.2017 aktualisiert um 13:30:09 Uhr
Goto Top
Ändere deine Zeile 5124 einmal folgend:
if ( version_compare( phpversion(), '5.4', '<' ) ) {  
  $emoji_char = html_entity_decode( $emojum, ENT_COMPAT, 'UTF-8' );  
} else {
  $emoji_char = html_entity_decode( $emojum );
}


bzw. ändere deine Datei folgend:
https://github.com/WordPress/WordPress/blob/master/wp-includes/formattin ...

Gruß
eisbein
Mitglied: vcdwelt
vcdwelt 14.12.2017 aktualisiert um 13:37:30 Uhr
Goto Top
Nach dem ändern der PHP Version auf 7.2 sieht es jetzt erstmal gut aus. Zumindest für den Moment face-smile
Danke dir für den Hinweis, da hätte ich auch selber drauf kommen können...

Ansonsten würde ich die formatting.php wie von dir angegeben abändern und erneut testen.


Vielen Dank!
Mitglied: eisbein
eisbein 14.12.2017 um 13:36:44 Uhr
Goto Top
Das PHP-Update dürfte reichen face-wink

Gruß
eisbein