Bonsoir tout le monde,

Je viens de changer d'hébergeur pour passer de chez free.fr à breizh-heberg.net. J'avais chez free une base de données que j'ai exporté, puis importé sur ma base breizh-heberg.

Procédure suivie pour l'export :

Jeu de caractère UTF-8. Le fichier d'export généré a une extension .sql et pour chaque table j'ai dans ce fichier :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ;
J'ai également essayé avec ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
TYPE=MyISAM  AUTO_INCREMENT=17 ;
Mais le résultat est le même..

Procédure suivie pour l'import :

Jeu de caractère du fichier : utf8

Le problème qui se pose à moi :

Tout fonctionne très bien mais mes accents ne sont pas affichés correctement.

Pour ce qui était dans la base avant que je ne la transfère :

Les é sont par exemple remplacés par des é (apparement "à cause d'un mauvais paramétrage, un caractère unicode codé sur plusieurs octets est interprété comme mono-octet" d'après ce que j'ai lu dans le fichier PDF de la signature d'un des admins cela dit je ne sait pas comment remédier à ce problème...)

Pour ce que j'ajoute dans la base à partir du script en php après le transfert :

Les éèà sont par exemple remplacés par des ?,?,?

(Pour une modification de la table aux caractéristiques m'ayant servi d'exemple ci-dessous)

J'ai essayé diverses manipulations douteuses sans succès.

Voilà ce que j'ai actuellement sur ma base :

Interclassement pour la connexion MySQL : latin1_general_ci

Exemple pour une table qui continent des accens remplacés par des ? :

type : text
interclassement : latin1_general_ci

Informations complémentaires :

Base de départ :
- Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
- Version du serveur: 5.0.45
- Version du client MySQL: 5.0.51
- phpMyAdmin - 2.11.3
- Extensions PHP utilisées: mysql

Variables et réglages du serveur de la base de départ :

Variable Valeur pour la session / Valeur globale
auto increment increment 1
auto increment offset 1
automatic sp privileges ON
back log 256
basedir /usr/mysql/
binlog cache size 32 768
bulk insert buffer size 8 388 608
character set client utf8
(Valeur globale) latin1
character set connection 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 /usr/mysql/share/mysql/charsets/
collation connection latin1_general_ci
collation database latin1_general_ci
collation server latin1_general_ci

completion type 0
concurrent insert 1
connect timeout 5

etc.

Base d'arrivée :
- Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
- Version du serveur: 5.0.51a-0.dotdeb.1-log
- Version du client MySQL: 5.0.51a
- phpMyAdmin - 2.11.6
- Extensions PHP utilisées: mysqli

Variables et réglages du serveur de la base d'arrivée :
Variable Valeur pour la session / Valeur globale
auto increment increment 1
auto increment offset 1
automatic sp privileges ON
back log 50
basedir /usr/
binlog cache size 32 768
bulk insert buffer size 8 388 608
character set client utf8
(Valeur globale) latin1
character set connection 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 /usr/share/mysql/charsets/
collation connection latin1_general_ci
(Valeur globale) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci

completion type 0
concurrent insert 1
connect timeout 5

etc.


Précision : j'ai pris connaissance d'un post similaire au mien posté précédemment sur ce forum et qui n'a pas trouvé pour le moment de solution, j'ai essayé de mettre la balise :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
$page .= "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8". $langInfos['ENCODING']."\">"
dans le fichier qui gère les en-têtes sur le script en php mais cela ne change rien.

En espérant qu'une âme charitable puisse m'aider à trouver une solution à mon problème (je peux filer les accès à ma base par mp si nécessaire)....

Dernier truc : comme un boulet j'ai supprimé la base de départ.



Bon après avoir parlé avec l'admin de mon hébergeur j'ai trouvé la solution (toute con) :

fallait mettre à la racine de mon site un .htaccess avec :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
AddDefaultCharset UTF-8
Et ça fonctionne impec...