Ma page affiche souvent des éléments tels que ",", ", au lieu de caractères normaux".
J'utilise utf8 pour la page d'en-tête et MySQL encoder. Comment cela peut-il arriver?
Ce sont des caractères encodés en utf-8. Utilisez tf8_decode () pour les convertir en caractères ISO-8859-1 normaux.
Si vous voyez ces caractères, ce n’est probablement pas le cas spécifiez correctement le codage des caractères . Parce que ces caractères sont le résultat lorsqu'une chaîne multi-octets UTF-8 est interprétée avec un codage sur un octet tel que ISO 8859-1 ou Windows-1252 .
Dans ce cas ë
pourrait être encodé avec 0xC3 0xAB qui représente le caractère Unicode ë
(U + 00EB) en UTF-8.
Même si utf8_decode
est une solution utile, je préfère corriger les erreurs de codage sur la table elle-même. À mon avis, il vaut mieux corriger les mauvais caractères eux-mêmes que de faire des "hacks" dans le code. Faites simplement un replace
sur le champ de la table. Pour corriger les mauvais caractères encodés de OP:
update <table> set <field> = replace(<field>, "ë", "ë")
update <table> set <field> = replace(<field>, "Ã", "à")
update <table> set <field> = replace(<field>, "ì", "ì")
update <table> set <field> = replace(<field>, "ù", "ù")
Où <table>
est le nom de la table mysql et <field>
est le nom de la colonne dans la table. Voici une très bonne liste de contrôle pour ces caractères encodés entre Windows-1252 et les caractères utf-8 -> , généralement mal codés, mappant des caractères Windows-1252 en caractères UTF-8 Octets en caractères latins-1 .
N'oubliez pas de sauvegarder votre table avant d'essayer de remplacer des caractères par SQL !
[ Je sais que c'est une réponse à une très vieille question, mais le problème a de nouveau été abordé. Certaines anciennes machines Windows ne codaient pas correctement le texte avant de l'insérer dans la table assemblée utf8_general_ci.]