| Auteur | |
|---|---|
| reg3 | # 18 Nov 2009 - 10:54:21 |
| 8 Posts |
Bonjour, Une bonne idee que ce sous-forum Mon site est exclusivement en francais et est appele a le rester. Mes pages html sont en ANSI et dans leur entete j'ai insere <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> pas de probleme d'affichage des accents et cedilles. J'ai change d'hebergeur (France vers thailande) parce que c'est la que le site va fonctionner. Le probleme que j'ai, c'est que les donnees provenant ou entrant dans ma BDD m'affichent des '?' a la place des accents et autres. En local et chez mon hebergeur francais je n'avais eu qu'a exporter/importer ma BDD avec phpmyadmin pour que cela fonctionne... J'ai donc compare les 'variables' de ces 3 bases: locale, france et thailande et essaye de les mettre en phase, mais tout n'a pas pu etre fait car dans les 'variables' thai apparait toujours tis620 (qui est l'encodage thai) voici: character set client utf8 (Valeur globale) tis620 character set connection utf8 (Valeur globale) tis620 character set database tis620 character set filesystem binary character set results utf8 (Valeur globale) tis620 character set server tis620 character set system utf8 character sets dir /usr/share/mysql/charsets/ collation connection utf8_unicode_ci (Valeur globale) tis620_thai_ci collation database tis620_thai_ci collation server tis620_thai_ci Mon hebergeur devrait me contacter, mais depuis 2 jours pas de nouvelles... En local j'ai character set client utf8 (Valeur globale) latin1 character set connection utf8 (Valeur globale) latin1 character set database latin1 character set filesystem binary character set results utf8 (Valeur globale) latin1 character set server latin1 character set system utf8 character sets dir D:\PIERRE\PERSO\SITES\WAMP\bin\mysql\mysql5.0.51b\share\charsets\ collation connection utf8_unicode_ci (Valeur globale) latin1_swedish_ci collation database latin1_swedish_ci collation server latin1_swedish_ci J'ai essaye de rajouter dans mon .htaccess AddDefaultCharset iso-8859-1 et autres mais sans succes Puisque l'ANSI marche pour mes pages html j'ai essaye aussi d'expoter/importer en ANSI mais pas plus de succes... J'ai parcourru ce forum et bien d'autres mais sans reussite pour l'instant... Une aide serait la bien venue. Merci Reg3 Modifié par reg3 (23 Nov 2009 - 08:23) |
| reg3 | # 19 Nov 2009 - 03:44:23 |
| 8 Posts |
Bonjour, Une precision que j'ai oublie de donner et qui a peut etre son importance: Si je change dans ma BDD les accents, par exemple 'é' en é ils s'affichent des lors correctement dans le site en FO. Mais tous les entrants en BDD, adresses, commentaires ou autres accentues s'enregistrent sous forme de '?' Je peux envisager pour "contourner le probleme" de modifier mes donnees en BDD en changeant les 'é' en é Mais restera le probleme des "entrants" fournis par le client impossible a gerer une fois enregistres sous forme de '?' Il faudrait dans le meilleurs des cas implementer de facon centrale une "fonction" qui fasse la convertion 'é' en é avant l'enregistrement en BDD, est ce possible dans le .htaccess? et sous quelle forme? Au pire une fonction php dans toutes mes pages envoyant des donnees a la BDD, dans ce cas la quel serait le code a utiliser? Merci a l'avance pour vos lumieres Reg3 |
| reg3 | # 19 Nov 2009 - 14:12:08 |
| 8 Posts |
Ouf j'ai trouve... Bon pour ceux que cela interesserait il fallait rajouter mysql_query("set names latin1"); et non pas comme souvent vu: mysql_query("SET NAMES 'utf8'"); euh j'avais meme essaye: mysql_query("SET NAMES 'iso-8859-1'"); |
| fvsch | # 19 Nov 2009 - 14:16:34 |
| Administrateur 19942 Posts |
Bonjour, Pour commencer, l'ANSI n'est pas un encodage. (Si tu utilises Notepad++: il raconte des bêtises là-dessus, mais je crois que les dernières versions corrigent ça.) Ensuite, il faudrait s'assurer que les données sont bien en UTF-8 telles qu'enregistrées dans la base de données. Si tes tables sont marquées comme étant en latin1 (c'est-à-dire ISO-8859-1), c'est pas bon signe. Si ton export (au format SQL) contient des instructions pour créer des tables avec l'encodage latin1, c'est pas bon non plus. Il faudrait aussi vérifier que le site déclare bien le bon encodage (UTF-8), aussi bien dans le code HTML que dans les en-têtes HTTP envoyés par le serveur. Enfin, si tout ça est bon, il faut pouvoir créer les tables en utf8 du côté de l'hébergeur thaïlandais (normalement si le fichier d'export au format SQL est correct ça devrait être automatique à l'import), et vérifier que le site ouvre bien une connexion MySQL en UTF-8 (via un SET NAMES "utf8" par exemple). a écrit : Non, le meilleur des cas consiste à gérer correctement l'encodage des données de bout en bout, ce qui évite d'avoir à utiliser des entités HTML (en dehors des trois caractères pour lesquels c'est obligatoire). a écrit : Non. |
| fvsch | # 19 Nov 2009 - 14:20:05 |
| Administrateur 19942 Posts |
reg3 a écrit : Auquel cas: - soit tes données ne sont pas en UTF-8 et tu n'as jamais voulu faire un site en UTF-8 (???); - soit tes données sont en UTF-8 dans la base de données, mais marquées en latin1, et en gros si tu déclares une connexion en UTF-8 MySQL va «convertir» tes données et en réalité les corrompre à la volée...; - soit tes données sont corrompues dans la base de données et le type de conversion à la volée qui est effectué te permet de retomber sur l'encodage attendu en affichage. Oui je sais, c'est compliqué. MySQL est loin d'être simple pour la gestion des encodages. |
| reg3 | # 20 Nov 2009 - 08:20:25 |
| 8 Posts |
Merci pour ces precisions |