Donc quel est le problème,
C'est un caractère ’
( RIGHT SINGLE QUOTATION MARK
- U + 2019) qui est décodé en CP-1252 au lieu de UTF-8 . Si vous cochez la encodages table, vous voyez que ce personnage est en UTF-8 composé d'octets 0xE2
, 0x80
et 0x99
. Si vous vérifiez la mise en page de la page de codes CP-1252 , vous verrez que chacun de ces octets représente les caractères individuels â
, €
et ™
.
et comment puis-je résoudre ce problème?
Utilisez UTF-8 au lieu de CP-1252 pour lire, écrire, stocker et afficher les caractères.
J'ai le Content-Type défini sur UTF-8 dans ma <head>
balise et mes en-têtes HTTP:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Cela indique uniquement au client le codage à utiliser pour interpréter et afficher les caractères. Cela n'indique pas à votre propre programme quel encodage utiliser pour lire, écrire, stocker et afficher les caractères. La réponse exacte dépend de la plate-forme / base de données / langage de programmation côté serveur utilisé. Notez que celui défini dans l'en-tête de réponse HTTP a la priorité sur la balise meta HTML. La balise meta HTML ne serait utilisée que lorsque la page est ouverte à partir du système de fichiers du disque local au lieu de HTTP.
De plus, mon navigateur est configuré pour Unicode (UTF-8)
:
Cela force uniquement le client quel encodage utiliser pour interpréter et afficher les caractères. Mais le problème réel est que vous envoyez déjà ’
(encodé en UTF-8) au client au lieu de ’
. Le client s'affiche correctement en ’
utilisant le codage UTF-8. Si le client avait été mal instruit pour utiliser, par exemple ISO-8859-1, vous auriez probablement vu à la ââ¬â¢
place.
J'utilise ASP.NET 2.0 avec une base de données.
C'est probablement là que réside votre problème. Vous devez vérifier avec un outil de base de données indépendant à quoi ressemblent les données.
Si le ’
caractère est là, c'est que vous ne vous connectez pas correctement à la base de données. Vous devez indiquer au connecteur de base de données d'utiliser UTF-8.
Si votre base de données contient ’
, c'est votre base de données qui est en panne. Très probablement, les tables ne sont pas configurées pour être utilisées UTF-8
. Au lieu de cela, ils utilisent le codage par défaut de la base de données, qui varie en fonction de la configuration. Si tel est votre problème, il suffit généralement de modifier la table pour utiliser UTF-8. Si votre base de données ne prend pas en charge cela, vous devrez recréer les tables. Il est recommandé de définir le codage de la table lorsque vous la créez.
Vous utilisez probablement SQL Server, mais voici du code MySQL (copié à partir de cet article ):
CREATE DATABASE db_name CHARACTER SET utf8;
CREATE TABLE tbl_name (...) CHARACTER SET utf8;
Si votre table est cependant déjà UTF-8, alors vous devez prendre du recul. Qui ou quoi a mis les données là-bas. C'est là que réside le problème. Un exemple serait les valeurs soumises par formulaire HTML qui sont incorrectement codées / décodées.
Voici quelques liens supplémentaires pour en savoir plus sur le problème: