J'ai l'installation standard de XAMPP sur win7 (x64). Ayant eu ma part de problèmes d'encodage dans un projet précédent où l'encodage mysql ne correspondait pas à l'encodage php qui, à son tour, produisait parfois du HTML dans d'autres encodages, j'ai décidé de tout encoder de manière cohérente en utilisant utf-8.
Je viens de commencer avec le balisage html et je rencontre déjà des problèmes.
ISO_8859-1
. J'ai découvert cela plus tard grâce à la réponse de Sherm Pendleys. J'ai dû revenir et modifier mes paramètres de projet (qui ont été définis sur "ISO-8859-1") pour le "UTF-8" souhaité.AddCharset UTF-8 .php
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
header('Content-Type:text/html; charset=UTF-8');
La page est évidemment servie dans utf-8 (firefox et chrome le reconnaissent comme tel) mais tous les caractères spéciaux tels que é
, á
Ou ¡
S'affiche simplement sous la forme �
. Également lors de la visualisation du code source.
Lors de la suppression des paramètres d'encodage mentionnés ci-dessus, tous les caractères sont rendus correctement, mais l'encodage détecté affiche windows-1252
Ou ISO-8859-1
Selon le navigateur.
Comment venir? Je suis très perplexe. Je m'attendais au comportement opposé exact.
Tout conseil est le bienvenu, merci!
edit: J'espère que cela aide un peu plus. Ceci est l'en-tête de réponse (selon Firebug)
HTTP/1.1 200 OK
Date: Sat, 26 Mar 2011 20:49:44 GMT
Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_Perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.1
Content-Length: 91
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
Lors de la [suppression] les paramètres d'encodage mentionnés ci-dessus, tous les caractères [sont rendus] correctement, mais l'encodage détecté affiche Windows-1252 ou ISO-8859-1 selon le navigateur.
C'est ce que vous envoyez vraiment. Aucun des paramètres d'encodage de votre liste à puces ne modifiera votre sortie de quelque façon que ce soit; ils ne font que dire au navigateur quel encodage assumer lors de l'interprétation de ce que vous envoyez. C'est pourquoi vous obtenez ces �s - vous dites au navigateur que ce que vous envoyez est UTF-8, mais c'est vraiment ISO-8859-1.
Dans mon cas, la base de données a renvoyé latin1
, quand mon navigateur attendait utf8
.
Donc pour MySQLi j'ai fait:
mysqli_set_charset($dblink, "utf8");
Voir http://php.net/manual/en/mysqli.set-charset.php pour plus d'informations
Vérifiez si l'un de vos .php
fichiers qui imprimant du texte, est également correctement encodé dans utf-8
.
Dites à PDO votre charset
initialement .... quelque chose comme
PDO("mysql:Host=$Host;dbname=$DB_name;charset=utf8;", $username, $password);
Remarquez le: charset=utf8;
partie.
j'espère que ça aide!
Je viens du Brésil et je crée mes bases de données en utilisant latin1_spanish_ci
. Pour le html et tout le reste que j'utilise:
charset=ISO-8859-1
Les données vont bien avec é
, ã
et ç
... Parfois je dois mettre les textes du html en utilisant le code de celui-ci, tels que:
Olá
donne moi
Olá
Vous pouvez trouver les codes sur cette page: http://www.ascii.cl/htmlcodes.htm
J'espère que cela t'aides. Je me souviens que c'était vraiment ennuyeux.
On dirait que personne n'a mentionné
SET NAMES utf8;
J'ai trouvé cette solution ici et cela m'a aidé. Comment l'appliquer:
Pour être tout UTF-8, émettez la déclaration suivante juste après avoir établi la connexion au serveur de base de données: SET NAMES utf8;
Peut-être que cela aidera quelqu'un.
Le problème est le jeu de caractères utilisé par Apache pour servir les pages. Je travaille avec Linux, donc je ne connais rien à XAMPP. J'ai également eu le même problème, ce que j'ai fait pour résoudre le problème a été d'ajouter le jeu de caractères au fichier de configuration charset
(il est commenté par défaut).
Dans mon cas, je l'ai dans /etc/Apache2/conf.d/charset
mais, puisque vous utilisez Windows, l'emplacement est différent. Je vous donne donc ceci comme une idée de la façon de le résoudre.
À la fin, mon fichier de configuration charset est comme ceci:
# Read the documentation before enabling AddDefaultCharset.
# In general, it is only a good idea if you know that all your files
# have this encoding. It will override any encoding given in the files
# in meta http-equiv or xml encoding tags.
AddDefaultCharset UTF-8
J'espère que ça aide.