Alors, quel est le problème,
Il est un ’
(RIGHT SINGLE QUOTATION MARK
- U + 2019) caractère qui a été codé comme CP-1252 au lieu de UTF-8. Si vous vérifiez la table encodings, vous voyez que ce caractère est en UTF-8 composé des octets 0xE2
, 0x80
et 0x99
. Si vous vérifiez le CP-1252 code page layout, 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 du CP-1252 pour lire, écrire, stocker et afficher les caractères.
Je le Content-Type en UTF-8 dans les deux mon tag <head>
et mes en-têtes HTTP:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Cela indique que le client qui le codage à utiliser pour interpréter et affiche les caractères. Cela n'indique pas à votre propre programme quel codage utiliser pour lire, écrire, stocker et afficher les caractères. La réponse exacte dépend de la plate-forme serveur/base de données/langage de programmation utilisé.Notez que celui défini dans l'en-tête de réponse HTTP a la priorité sur la balise META HTML. La méta-balise HTML ne sera 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 que le client qui le codage à utiliser pour interpréter et afficher les caractères. Mais le vrai problème est que vous envoyez déjà ’
(codé en UTF-8) au client au lieu de ’
. Le client affiche correctement ’
en utilisant l'encodage UTF-8. Si le client a été misinstructed à utiliser, par exemple ISO-8859-1, vous auriez probablement vu ââ¬â¢
à la place.
J'utilise ASP.NET 2.0 avec une base de données.
Ceci est le plus probable où votre problème réside. Vous devez vérifier avec un outil de base de données indépendant à quoi ressemblent les données.
Si le caractère ’
est présent, 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 ’
, votre base de données est en panne. Les tables ne sont probablement pas configurées pour utiliser UTF-8
. Au lieu de cela, ils utilisent l'encodage par défaut de la base de données, qui varie en fonction de la configuration. Si c'est votre problème, il suffit généralement de modifier la table pour utiliser UTF-8. Si votre base de données ne supporte pas cela, vous devrez recréer les tables. Il est recommandé de définir l'encodage de la table lorsque vous la créez.
Vous utilisez probablement SQL Server, mais voici un code MySQL (copié à partir this 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 un pas en arrière . Qui ou ce mettre les données là. C'est où le problème est. Un exemple serait des valeurs soumises sous forme HTML qui sont incorrectement codées/décodées.
Voici quelques liens pour en savoir plus sur le problème:
"Ou utilisez ’". problème résolu. –
Non, ce n'est pas résolu. Il y a toujours une incohérence dans l'encodage des caractères dans votre application. Vous retrouverez le même problème dans le futur pour d'autres caractères non-CP1252. Et il y en a beaucoup ... – BalusC
Exemples de caractères que vous continuerez à rencontrer: http://www.i18nqa.com/debug/utf8-debug.html – Zoot