web-dev-qa-db-fra.com

Personnages étranges - malgré tout être UTF-8

Vous ne savez pas pourquoi ce fil a été fermé , mais c'est le même problème qui frappe beaucoup de gens.

Tous mes WP paramètres de configuration sont en ordre:

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

J'ai même essayé de les activer un par un. Aucun n'a travaillé.

Lorsque je sauvegarde un message, des caractères étranges apparaissent à la place des apostrophes et des espaces. Cela se produit que je tape le contenu manuellement ou

J'ai essayé quelques plugins.

  1. UTF-8 Sanitize
  2. Convertir WP en UTF-8

..etc.

Aucun d'entre eux ne fonctionne. Le problème persiste.

J'ai également modifié le jeu de caractères et le classement de la base de données dans MYSQL. Capture d'écran:

MySQL tables/columns are all utf-8

Ceci est une capture d'écran de moi entrant du contenu en le collant:

Text is fine when entering it in the WP UI

Mais immédiatement après la sauvegarde, le texte revient avec des caractères tronqués l'ayant remplacé:

Annoying garbled characters

Quoi d'autre?

Je suis passé par le rigmarole de vider toute la base de données MySQL, puis de supprimer tous les anciens caractères non-utf8 via la commande TR.

tr -cd '\11\12\15\40-\176' < file-with-binary-chars > clean-file

file-with-binary-chars était le vidage MySQL. Puis j'ai restauré la table.

Ma configuration MySQL est tout utf8:

[client]
default-character-set=utf8

[mysqld]
character-set-client=utf8
collation-server=utf8_unicode_ci
character-set-server=utf8

Mon navigateur est Chrome. Le codage est UTF-8 (dans le menu VIEW).

Que puis-je faire d'autre? Dois-je également créer tous les fichiers de plug-in utf-8?

Pour votre information, ce blog est l’un des blogs Wordpress. Il existe d’autres installations Wordpress plus récentes sur le même serveur qui utilisent la même installation de MySQL 5.6.17, mais elles n’ont pas ce problème. Mon hypothèse est que, étant un blog plus ancien, le texte saisi depuis longtemps peut présenter certaines variations, mais franchement, après avoir suivi toutes les étapes ci-dessus, je ne sais vraiment pas ce que je peux faire d'autre.

Merci pour toutes les entrées ou des pointeurs!

4
PKHunter

Cela est généralement dû au fait que vous copiez/collez des informations MS Word dans l'éditeur de contenu WordPress. WordPress utilise quelque chose appelé "Smart Quotes", via une fonction nommée wptexturize () .

Solution idéale

La solution idéale serait de revenir en arrière dans votre contenu et de remplacer tous les guillemets simples/doubles à l’aide du clavier.

Cependant, si vous travaillez avec des copies/pâtes massives, cela peut ne pas être réalisable.

Désactive le filtre wptexturize ()

Une autre option consiste à désactiver le filtre wptexturize(); Pour ce faire, insérez le code suivant dans le fichier functions.php de votre thème enfant:

remove_filter('the_content', 'wptexturize');

Vous pouvez également souhaiter supprimer le filtre des commentaires et/ou extraits:

remove_filter('comment_text', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');

Ou pour les titres:

remove_filter ('single_post_title', 'wptexturize');
remove_filter ('the_title', 'wptexturize');
remove_filter ('wp_title', 'wptexturize');

Nettoyer la base de données

Pour le contenu existant qui a déjà enregistré les caractères "étranges" dans la base de données; vous devrez peut-être nettoyer la base de données en exécutant les requêtes suivantes à partir de PHPMyAdmin (veillez à effectuer d'abord une sauvegarde de la base de données):

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, '…', '…');

Plugins

Eh bien ... c'est WordPress. Vous pouvez toujours utiliser un plugin pour vous aider à gérer le filtre wptexturize(). Jetez un coup d'œil sur Cette liste et voyez si l'on vous convient.

6
josh

Je faisais face au même problème.

J'ai tout essayé comme toi et à la fin j'ai essayé une dernière chose.

Changé le DB_CHARSET dans le fichier wp-config en latin1.

Et les choses ont fonctionné: /

define('DB_CHARSET', 'latin1');
define('DB_COLLATE', 'utf8mb4_general_ci');
2
vs_lala

Ce qui suit l'a corrigé pour moi, donc poster ici pour le partager. Même si j’ai exécuté les mises à jour SQL suggérées, j’avais toujours les symboles amusants avant les liens "En savoir plus".

Je suis totalement choqué. Après des heures d’essais et de tests, j’ai enfin trouvé l’option "Paramètres" puis "Lectures" ci-dessous: "Encodage des pages et des flux". Après le passage de UTF-7 à UTF-8, tout semble à nouveau satisfaisant.

 enter image description here 

Et même plus étrange, après l'avoir changé en UTF-8, l'option disparaît de la page. Selon Site WordPress , cette option a été supprimée depuis la version 3.5.

1
NealWalters

Le problème peut être causé par les plugins et les téléchargements FTP directs.

Voici le détail:

http://iiiji.com/wordpress-appearing-weird-characterscode/

0
Dennis Cho