2017-09-08 1 views
1

Dans certaines pages de mon site, l'encodage des caractères semble propre et dans d'autres pages ce n'est pas bon. Par exemple, il pourrait ressembler à ceci: Flu¨e, au lieu de ceci: Flüe. Je travaille sur Wordpress, avec mon propre thème. Mon document php est défini sur <meta charset="<?php bloginfo('charset'); ?>">. J'ai également essayé avec <meta charset="UTF-8"> mais cela ne résout pas le problème.L'encodage de caractères ne fonctionne pas correctement avec PHP, WordPress

Voici la tête de mon fichier header.php:

<head> 
 

 
    <meta charset="<?php bloginfo('charset'); ?>"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <meta name="description" content="Temporary Gallery, Centre for contemporary art, Köln" /> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
    <link rel="stylesheet" href="dist/css/bootstrap-responsive-tabs.css"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 
<head>

+0

Utilisez ceci et faites-moi savoir –

+0

@AnandPandey merci, mais cela ne fonctionne toujours pas. – Lolo

+0

Dans index.php, définissez ceci: ini_set ('default_charset', 'utf-8') –

Répondre

0

Essayez de comprendre ce que les chaînes qui sont affichées mal ont en commun - comme dans ce qui est leur source commune - ils proviennent d'un autre fichier texte/base de données/tables - qui devrait vous donner quelques indications où est la source du problème. PHP ne convertit aucun texte automatiquement alors regardez où il se trouve à l'origine.

Si vous pouvez identifier plus précisément où le texte commence à être déformé, nous pouvons vous aider à mieux.

Certaines choses que vous pouvez étudier en fonction de mon expérience personnelle avec ces types de problèmes:

d'abord assurer votre document .php (le fichier lui-même) est d'un encodage correct. Vous devriez être en mesure de le définir dans votre éditeur de texte ou IDE. Cela peut arriver si vous avez copié des fichiers à partir d'endroits différents. Si vous avez des fichiers non codés en UTF-8, convertissez-les.

Ensuite, assurez-vous que les données que vous récupérez dans ce fichier sont récupérées en utilisant le codage UTF-8. Vous pouvez par exemple avoir du code qui récupère des données d'une base de données où différentes tables ont un encodage différent, ou le texte est codé différemment, vérifiez cela pour plus d'informations: https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html (faites-nous savoir si vous utilisez une base de données différente comme Postgres). Vous pouvez essayer d'imprimer la chaîne provenant d'une base de données juste après qu'elle soit retournée - si elle est correcte mais qu'elle est mal affichée sur la page, il est évident que la mise en forme est mauvaise et que la base de données est correcte. Troisièmement, le texte enregistré dans vos tables correctement configurées en utf-8 peut être enregistré avec un mauvais encodage - vous devrez peut-être le corriger directement ou vérifier le code qui sauvegarde dans la base de données.

Le serveur de base de données pourrait également être configuré pour servir des résultats dans un codage différent et vous pourriez avoir besoin de le configurer correctement: Change MySQL default character set to UTF-8 in my.cnf?

Une autre option est pour vous de rechercher toutes les fonctions qui traitent de la conversion des encodages comme http://php.net/manual/en/function.utf8-encode.php - il se peut que quelque chose de ce genre se produise inutilement et cela est fait pour un texte qui est déjà dans utf-8, ou qui est dans un encodage différent et vous avez besoin d'une autre fonction.

+0

merci vous pour cette explication détaillée! Je pense que mes fichiers sont correctement mis en place, car le formatage du texte est bon, sauf avec le "u" minuscule en conjonction avec le ¨. Donc, chaque "ü" apparaît comme "u", seulement pour les minuscules. Le texte en majuscules et les autres lettres fonctionnent bien ... – Lolo

+0

Vos ü sont-ils écrits directement dans votre document ou les récupérez-vous d'une autre source? Pouvez-vous l'imprimer dans votre journal avec l'utilisation de error_log (print_r ($ faulty_string, 1)); et voir si ça va dans votre journal des erreurs? –

+0

En fait, mes ü sont écrits directement dans mes admin Wordpress posts. Mais j'ai réalisé qu'ils apparaissent bien dans l'admin et pas bon dans le site. Ils sont des textes copiés et collés ... – Lolo