web-dev-qa-db-fra.com

Comment convertir ces étranges personnages? (Ã, Ã, ì, ù, Ã)

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?

45
Leonardo

Ce sont des caractères encodés en utf-8. Utilisez tf8_decode () pour les convertir en caractères ISO-8859-1 normaux.

47
Ray

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.

25
Gumbo

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>, "ù", "ù")

<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.]

12
davidkonrad