Bonjour,

Une bonne idee que ce sous-forum Smiley biggrin

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)
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 &eacute; 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 &eacute;
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 &eacute; 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 Smiley biggrin

Reg3
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'");
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 :
Il faudrait dans le meilleurs des cas implementer de facon centrale une "fonction" qui fasse la convertion 'é' en &eacute; avant l'enregistrement en BDD

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 :
est ce possible dans le .htaccess?

Non.
reg3 a écrit :
il fallait rajouter
mysql_query("set names latin1");
et non pas comme souvent vu: mysql_query("SET NAMES 'utf8'");

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.