184 votes

"’" apparaît sur la page au lieu de " ' "

s'affiche sur ma page au lieu de ' .

J'ai le Content-Type fixé à UTF-8 dans mes deux <head> et mes en-têtes HTTP :

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

enter image description here

En outre, mon navigateur est réglé sur Unicode (UTF-8) :

enter image description here

Quel est donc le problème et comment puis-je le résoudre ?

11voto

David Waters Points 6645

Votre chaîne est codée dans un encodage (UTF-8) et ce qui interprète cette page en utilise un autre (disons ASCII).

Spécifiez toujours votre encodage dans vos en-têtes http et assurez-vous qu'il correspond à la définition d'encodage de votre framework.

Exemple d'en-tête http :

Content-Type    text/html; charset=utf-8

Définition de l'encodage dans asp.net

<configuration>
  <system.web>
    <globalization
      fileEncoding="utf-8"
      requestEncoding="utf-8"
      responseEncoding="utf-8"
      culture="en-US"
      uiCulture="de-DE"
    />
  </system.web>
</configuration>

Définition de l'encodage dans jsp

8voto

Pekka 웃 Points 249607

Si votre type de contenu est déjà UTF8, il est probable que les données arrivent déjà dans le mauvais encodage. Si vous récupérez les données d'une base de données, assurez-vous que la connexion à la base de données utilise UTF-8.

S'il s'agit de données provenant d'un fichier, assurez-vous que le fichier est correctement encodé en UTF-8. Vous pouvez généralement le définir dans le menu "Enregistrer sous...". de l'éditeur de votre choix.

Si les données sont déjà brisées lorsque vous les visualisez dans le fichier source, il est probable qu'il s'agissait d'un fichier UTF-8, mais qu'il a été enregistré dans le mauvais encodage à un moment ou à un autre.

6voto

Goran Jakovljevic Points 122

Si quelqu'un obtient cette erreur sur un site WordPress, vous devez modifier le jeu de caractères de la base de données wp-config :

define('DB_CHARSET', 'utf8mb4_unicode_ci');

au lieu de :

define('DB_CHARSET', 'utf8mb4');

4voto

joe Points 573

Si les autres réponses ne vous ont pas aidé, vous pouvez vérifier si votre base de données stocke effectivement les caractères mojibake. J'affichais le texte en utf-8, mais je voyais toujours le mojibake et il s'est avéré qu'en raison d'une mise à jour de la base de données, le texte avait été "mojibaké" de manière permanente.

Dans ce cas, une option consiste à "corriger" le texte avec la fonction Python ftfy (ou la version JavaScript) aquí ).

1voto

Jeremy Thompson Points 14428

Dans DBeaver (ou d'autres éditeurs), le fichier script sur lequel vous travaillez peut vous demander d'enregistrer en UTF8, ce qui modifiera le caractère :

â€"

en

–

ou

–

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X