Problèmes d'affichage des caractères accentués français en UTF-8
Je travaille sur un site en langue française construit dans CakePHP. J'ai essayé de multiples fonctions pour convertir le texte en UTF-8 et de l'afficher correctement, mais sans succès jusqu'à présent - toutes les lettres accentuées sont affiché comme un diamant noir avec un point d'interrogation. Ils ne s'affichent correctement lorsque j'ai changer le jeu de caractères dans le navigateur de l'ISO-8859-1, mais j'aimerais bien que le site en UTF-8 conforme. J'ai utilisé:
html_entity_decode($string, ENT_QUOTES, 'UTF-8');
htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
utf8_encode
mais pas de cigare. La page est défini à l'UTF-8 dans l'en-tête
Et la base de données MySQL est l'utilisation de l'UTF-8. Comment puis-je obtenir les caractères accentués s'affichent correctement en UTF-8?
en général, vous n'avez rien à convertir. juste stocker le texte de l'encodage et de l'afficher en arrière en utilisant htmlspecialchars seulement.
OriginalL'auteur igniteflow | 2010-06-28
Vous devez vous connecter pour publier un commentaire.
Vérifier votre
@@character_set_results
. Par défaut, MySQL utiliselatin1
, pasutf8
. EssayezSET NAMES utf8
ou mysqli::set_charset.Mise à jour: voici comment vous pouvez vérifier les jeux de caractères à utiliser:
Lire plus sur dev.mysql.com.
OriginalL'auteur janmoesen
Première: Vérifier vos fichiers php encodage! Je travaille sur Mac, j'utilise Coda de programme, et il dispose d'une option de conversion de jeu de caractères, j'obtiens parfois des problèmes de ce genre et la conversion UTF-8 toujours les corriger. Je pense que Notepad++ pouvez le faire sur windows. (Si vous le faites de vos fichiers PHP, toutes les chaînes ne seront pas besoin de l'fonctions
htmlspecialchars()
,html_entity_decode
, etc )Deuxième: si vous utilisez la Sortie HTML, vérifiez si vous avez
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
sur votre tête...Troisième: Faire ce que @janmoesen dit sur votre base MySQL.
Me dire quelque chose à ce sujet.
hehehe de l'apprentissage et de l'enseignement! 🙂
OriginalL'auteur CuSS
Je viens de corriger un très semblables problème avec les caractères accentués ne s'affichant. Ma table de base de données est codé en utf-8 et mon en-tête html est correctement configuré pour l'utf-8.
Je n'avais pas spécifié un jeu de caractères pour ma connexion MySQL dans mon cas, j'utilise PDO.
Pas de problèmes maintenant!
OriginalL'auteur Nick Shears
Dans le cas où cela peut aider n'importe qui à l'aide de Classes PHP.
Ma solution a été de définir l'Encodage de Caractère de ma Connexion.
OriginalL'auteur MikeBeaudin87