Caratteri speciali in WordPress UTF-8

8 gen 2012, 06:00:51
Visualizzazioni: 18.6K
Voti: 5

Ho un problema riguardante i caratteri speciali che appaiono corrotti nel front-end. Principalmente vengono convertiti in punti interrogativi, o qualcosa tipo �?).

Esempio - Frédèric diventa Fr�d�ric.

Alcuni fatti che mi hanno lasciato perplesso:

  • Questa installazione WordPress è su una macchina LOCALE e condivide il server con almeno altre 40 installazioni - nessuna delle quali ha questo problema.

  • Questa installazione WordPress condivide anche lo stesso database delle altre.

  • Il mio file wp-config ha definito il collate e il charset.

  • Il database sembra a posto, perché quando visualizzo il post nell'EDITOR (back end) - tutto è corretto, il problema è solo nel FRONT end.

    • Il database sembra a posto (2), aprendo il post in phpMyAdmin e controllando il valore diretto - tutti i caratteri sono corretti.
  • Questo problema NON è relativo all'encoding del browser/os, è stato verificato su 4 macchine diverse, 3 sistemi operativi e 9 browser..

Ho provato tutte le soluzioni che conosco dalla mia esperienza passata, che includono:

  • controllare il wp-config (è ok, utf-8 definito, collate ok)
  • Controllare il database - tutto UTF-8
  • controllare il mio header (<?php bloginfo('charset'); ?>) - che viene renderizzato correttamente come utf-8 con markup valido.
  • Aprire tutti i file del tema nel mio editor, convertire l'encoding in UTF-8 senza bom e salvare.

Mi sono perso qualcosa? Qualche idea??

11
Commenti

E i tuoi file sono scritti/salvati in UTF-8 (Temi, Plugin)?

kaiser kaiser
8 gen 2012 07:23:06

sì - l'ho già scritto nella domanda stessa. UTF-8 senza BOM

User User
8 gen 2012 07:23:44

Hai scritto "Tema", non plugin. Sicuro di aver disattivato tutti i plugin?

kaiser kaiser
8 gen 2012 07:24:39

no. Non ho disattivato alcun plugin, perché non ne sono installati (be', forse akismet o hello dolly - ma non attivati)

User User
8 gen 2012 08:06:05

L'unica situazione in cui mi sono imbattuto in qualcosa di simile è stata con i risultati di Google Geocoding poiché sono non definiti. La soluzione è stata convertire tutto in utf-8 sull'hook pre_save.

kaiser kaiser
8 gen 2012 17:33:27

Perché il tag htmlspecialchars-decode? Il problema si verifica anche con TwentyEleven?

fuxia fuxia
8 gen 2012 18:14:42

@ Kaiser - grazie , ho delle funzioni relative a google.maps che ho scritto - .. ci darò un'occhiata - anche se nessuna di esse viene effettivamente richiamata. @toscho - il tag è perché POTREBBE essere correlato a un problema nella decodifica e codifica dei caratteri speciali html. e sì, succede anche con TwentyEleven.

User User
9 gen 2012 07:16:29

AGGIORNAMENTO - ancora non ho idea di quale sia il problema .. Ma ho usato la funzione mb_convert_encoding() di php. Non è l'ideale ovviamente, e vorrei comunque sapere PERCHÉ è successo per evitare problemi futuri, quindi se qualcuno ha un'idea/soluzione - per favore postate.

User User
17 gen 2012 08:10:35

Ciao @Obmerkronen, sembra affascinante. Ecco cosa proverei se non l'hai già fatto: Esegui un'installazione pulita di WordPress su un nuovo DB e verifica che i caratteri UTF-8 funzionino. Se è così, modifica wp-config.php per utilizzare il DB del tuo, chiamiamolo "corrotto", installazione. Se l'installazione pulita funziona sul proprio DB e non funziona sul DB "corrotto", sai che è il tuo DB. Se l'installazione pulita funziona con entrambi, sai che sono i file nell'installazione "corrotta". Se l'installazione pulita non funziona, è molto probabile che sia un'impostazione di PHP o MySQL (il che è possibile anche se altre vecchie installazioni funzionano). Fammi sapere cosa succede!

Matthew Boynes Matthew Boynes
30 gen 2012 03:38:59

@ Matthew Boynes - grazie per il tuo interesse! In realtà ho già fatto questo controllo quando stavo lottando con il problema - su un'installazione pulita aveva la stessa patologia - anche senza cambiare nulla e senza funzioni aggiuntive (tranne quelle che ho scritto io - che sono totalmente irrilevanti e innocue... Da allora mi sono spostato su un altro progetto, ma appena posso, cercherò di capire perché è successo!

User User
1 feb 2012 08:18:18

Potrebbe essere il tuo server. Hai un file .htaccess per il dominio o la cartella in cui è installato WordPress?

Donald Jenkins Donald Jenkins
17 feb 2012 02:06:27
Mostra i restanti 6 commenti
Tutte le risposte alla domanda 2
3

Modifica:

Hai <meta charset="utf-8" /> nel tuo tag <head>? Un utente qui ha risolto un problema simile di codifica dei caratteri aggiungendo questo elemento.

In effetti ci sono molti risultati su Google che compaiono cercando utf-8 character encoding in wordpress.

Inoltre, incollare il testo nella vista HTML dell'editor e salvarlo fa qualche differenza?


Quanto segue non è una buona idea come spiegato da @toscho nei commenti.

Non sono sicuro che questo sia il metodo migliore per risolvere il problema, ma questo ha funzionato per il sito web di uno dei miei clienti.

Cerca queste due righe nel tuo file wp-config.php:

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

E commentale in questo modo:

//define('DB_CHARSET', 'utf8');
//define('DB_COLLATE', '');
20 feb 2012 21:55:53
Commenti

Ora rischi di ottenere codifiche salvate miste. Non è una buona idea.

fuxia fuxia
20 feb 2012 22:24:33

@toscho Corretto, sto cercando in rete una soluzione migliore e aggiornerò presto la mia risposta.

Jared Jared
20 feb 2012 22:28:53

<meta charset="utf-8" />

Aggiungere questo ha funzionato per me.

Rahul Rahul
17 ago 2017 10:46:10
0

Stai usando htmlentities() per eseguire l'escape dell'output per caso? In tal caso, devi definire 'UTF-8' come terzo parametro.

21 feb 2012 22:48:41