Caratteri strani - nonostante tutto sia in UTF-8
Non sono sicuro del perché questa discussione sia stata chiusa, ma questo è lo stesso problema che affligge molte persone.
Tutte le mie impostazioni di configurazione WP sono in ordine:
//define('DB_CHARSET', 'utf8');
//define('DB_CHARSET', 'utf8_unicode_ci');
//define('DB_COLLATE', '');
Ho anche provato ad abilitarle una per una. Nessuna ha funzionato.
Quando salvo un post, caratteri strani appaiono al posto degli apostrofi e degli spazi. Questo accade sia che io digiti il contenuto manualmente o meno.
Ho provato alcuni plugin.
- UTF-8 Sanitize
- Convert WP to UTF-8
..ecc.
Nessuno di essi funziona. Il problema persiste.
Ho anche modificato il set di caratteri e la collation del database in MySQL. Screenshot:
Questo è uno screenshot di quando inserisco del contenuto incollandolo:
Ma immediatamente dopo il salvataggio, il testo ritorna con caratteri incomprensibili che lo hanno sostituito:
Cos'altro?
Ho seguito la procedura di esportazione dell'intero database MySQL, poi ho rimosso tutti i vecchi caratteri non-utf8 tramite il comando TR.
tr -cd '\11\12\15\40-\176' < file-with-binary-chars > clean-file
Dove file-with-binary-chars
era il dump MySQL. Poi ho ripristinato la tabella.
La mia configurazione MySQL è tutta in utf8:
[client]
default-character-set=utf8
[mysqld]
character-set-client=utf8
collation-server=utf8_unicode_ci
character-set-server=utf8
Il mio browser è Chrome. La codifica è UTF-8 (nel menu VISUALIZZA).
Cos'altro posso fare? Devo rendere anche tutti i file dei plugin utf-8?
Per vostra informazione, questo blog è uno dei blog WordPress. Ci sono altre installazioni WordPress più recenti sullo stesso server che utilizzano la stessa installazione di MySQL 5.6.17, ma non hanno questo problema. La mia ipotesi è che essendo questo un blog più vecchio potrebbe avere alcune variazioni nel testo inserito molto tempo fa, ma francamente dopo aver fatto tutto quanto sopra, non so davvero cos'altro posso fare.
Grazie per qualsiasi suggerimento o indicazione!
Questo problema si verifica tipicamente quando si copia/incolla contenuto da Microsoft Word nell'editor di contenuti di WordPress. WordPress utilizza qualcosa chiamato "Smart Quotes", attraverso una funzione denominata wptexturize().
Soluzione ideale
La soluzione ideale sarebbe quella di rivedere il contenuto e sostituire manualmente tutti gli apici singoli/doppi utilizzando la tastiera.
Tuttavia, se stai lavorando con grandi quantità di testo copiato/incollato, questo potrebbe non essere fattibile.
Disabilitare il filtro wptexturize()
Un'altra opzione è disabilitare il filtro wptexturize()
, il che può essere fatto inserendo il seguente codice nel file functions.php del child theme:
remove_filter('the_content', 'wptexturize');
Potresti voler rimuovere il filtro anche dai commenti e/o dagli estratti:
remove_filter('comment_text', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');
O per i titoli:
remove_filter('single_post_title', 'wptexturize');
remove_filter('the_title', 'wptexturize');
remove_filter('wp_title', 'wptexturize');
Pulire il database
Per i contenuti esistenti che hanno già salvato i caratteri "strani" nel database, potrebbe essere necessario pulire il database eseguendo le seguenti query da PHPMyAdmin (assicurati prima di fare un backup del database):
UPDATE wp_posts SET post_content = REPLACE(post_content, '“', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, '’', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, '‘', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, '—', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, '–', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, '•', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, '…', '…');
Plugin
Beh... è WordPress. Puoi sempre usare un plugin per gestire il filtro wptexturize()
. Dai un'occhiata a questa lista e vedi se c'è qualcosa che fa al caso tuo.

Grazie per questo post molto informativo e hai ragione, le virgolette causano questi problemi. Ma non è limitato solo alle virgolette. A volte anche lo spazio prima e dopo un punto presenta questi strani caratteri. In secondo luogo, chiaramente qualcosa da qualche parte non funziona, perché questo non accade su nessun altro blog sullo stesso identico server, utilizzando la stessa installazione base di MySQL e tutto il resto. Anche i file di configurazione sono abbastanza simili.

Anch'io mi sono trovato esattamente con lo stesso problema.
Ho provato tutto proprio come te e alla fine ho tentato un'ultima cosa.
Ho modificato DB_CHARSET
nel file wp-config
impostandolo su latin1
.
E magicamente ha funzionato :/
define('DB_CHARSET', 'latin1');
define('DB_COLLATE', 'utf8mb4_general_ci');

Questo ha funzionato benissimo per me. Una nota, penso sia consigliabile usare utf8mb4_unicode_ci basandosi sulle informazioni in questo post Almeno, le opzioni sono ben illustrate qui per permettere a chiunque di fare la propria scelta.

Il seguente metodo ha risolto il problema per me, quindi lo condivido qui. Nonostante avessi eseguito gli aggiornamenti SQL suggeriti, continuavo a vedere strani simboli prima dei link "leggi tutto".
Sono rimasto davvero sorpreso. Dopo ore di tentativi e test, ho finalmente trovato l'opzione "Impostazioni" poi "Lettura" qui sotto: "Codifica per pagine e feed". Dopo aver cambiato da UTF-7 a UTF-8, tutto è tornato a visualizzarsi correttamente.
Ancora più strano, dopo aver cambiato in UTF-8, l'opzione è scomparsa dalla pagina. Secondo il sito di WordPress, questa opzione è stata rimossa a partire dalla versione 3.5.

Il problema può essere causato dai plugin e dai caricamenti diretti via FTP.
Ecco i dettagli:

Nel mio caso i caratteri strani non venivano scritti nel database. Verifica se anche l'SQL grezzo mostra i caratteri non corretti. Se vedi apostrofi normali nel database, commenta le seguenti due righe nel file wp-config.php
:
// define('DB_CHARSET', 'utf8');
// define('DB_COLLATE', '');
Questo ha risolto il problema immediatamente nel mio caso.
"Questo problema di codifica dei caratteri può verificarsi dopo un aggiornamento del database" - Link
