Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1382 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [mysql] UTF-8 :(

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[mysql] UTF-8 :(

n°1566735
theredled
● REC
Posté le 29-05-2007 à 16:02:19  profilanswer
 

Hello
 
Voila je veux transformer ma base d'ISO-machin en UTF-8.
 
J'ai donc :
- sauvegardé la base dans un fichier bdd.sql en spécifiant un encodage utf8 (vérif éditeur hexadecimal -> ca a marché)
- modifié le charset par défaut de chaque table dans ce fichier vers utf8
- créé une nouvelle base avec comme charset défaut utf8
- importé le fichier bdd.sql dans cette nouvelle table
 
Ayant fouillé dans les fichiers de la base (dans var/lib/mysql/), il semblerait que tout soit bien encodé en utf-8.
 
Seulement voila : quand je fais un SELECT via php, il me retourne des "?" à la place des "é", etc :(
(le charset de la page est utf-8)
 
Comme si la base était encodée en ISO quoi...
 
Pourquoi ça et comment remédier [:petrus dei]


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
mood
Publicité
Posté le 29-05-2007 à 16:02:19  profilanswer
 

n°1566737
FlorentG
Unité de Masse
Posté le 29-05-2007 à 16:03:35  profilanswer
 

Oublie pas un

Code :
  1. mysql_query('SET NAMES utf8');


Juste après la connexion

n°1566738
theredled
● REC
Posté le 29-05-2007 à 16:04:52  profilanswer
 

FlorentG a écrit :

Oublie pas un

Code :
  1. mysql_query('SET NAMES utf8');


Juste après la connexion


Ca fait quoi ça ? Pas moyen de le configurer automatiquement ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1566739
FlorentG
Unité de Masse
Posté le 29-05-2007 à 16:05:32  profilanswer
 

Je sais pas en fait...

n°1566744
theredled
● REC
Posté le 29-05-2007 à 16:09:42  profilanswer
 

En tout cas ça marche nickel merci bien [:smileysex]

 

http://dev.mysql.com/doc/refman/5. [...] ction.html

Citation :

SET NAMES indique ce qui est dans la commande SQL que le client envoie. Par conséquent, SET NAMES cp1251 indique au serveur : ``les futurs messages fournis par ce client seront dans le jeu de caractères cp1251'' et le serveur est libre de les traduire dans son propre jeu de caractères, éventuellement.


lapin :heink: ça devrait pas changer les données reçues selon cette définiton :/


Message édité par theredled le 29-05-2007 à 16:12:43

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1566747
FlorentG
Unité de Masse
Posté le 29-05-2007 à 16:15:43  profilanswer
 

Version française = caca :

Citation :

SET NAMES indicates what character set the client will use to send SQL statements to the server. Thus, SET NAMES 'cp1251' tells the server “future incoming messages from this client are in character set cp1251.” It also specifies the character set that the server should use for sending results back to the client. (For example, it indicates what character set to use for column values if you use a SELECT  statement.)

n°1566750
theredled
● REC
Posté le 29-05-2007 à 16:18:51  profilanswer
 

Effectivement c'est mieux :D

 


Le pire c'est que ce truc fait marcher nickel mon site codé/affichant en utf-8 en gardant ma base en ISO :ouch:

 

edit : ouais en fait c'est tout à fait normal :o mais c'est tout aussi génial :o


Message édité par theredled le 29-05-2007 à 16:19:51

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1566751
cgo2
Dum spiro spero
Posté le 29-05-2007 à 16:19:11  profilanswer
 

Par défaut les connexion mysql sont en ISO, donc mysql croit que tu demandes des données en ISO. Comme il est gentil et intelligent, il converti les données avant de te les envoyer pour que tu n'es pas de problème. Pareil quand c'est toi qui lui envoit des données, il va supposer que tu les envois en ISO, et donc les convertir.
 
Si tu les veux en UTF-8, il faut le lui dire, soit avec SET NAMES, soit dans le fichier de config global ou local.


---------------
When it's from Finland it's good.  - Mon blog
n°1573416
flexx35
Posté le 11-06-2007 à 19:05:31  profilanswer
 

Salut
 
Theredled, je voudrais savoir si c'est nécessaire de convertir sa base en UTF-8 si tu dis qu'on peux la garder en ISO et afficher des choses en UTF-8 ?
J'imagine que pour stocker des données en UTF-8 il faut que la base soit elle même en UTF-8.
Comment se comporte PHP vis-à-vis d'une telle base ? Doit-on utiliser les fonctions encode/decode ?
 
Pourrais-tu m'indiquer également quelle version de MySQL tu utilises.
Est-ce que la version 4.0.15 supporte l'UTF-8 ?
 
Dernière chose, pourrais-tu m'indiquer comment modifier le charset de chaque table ?
Cette opération est nécessaire pour pouvoir convertir le contenu d'une ancienne table ISO en UTF-8 ?
 
Merci de ton aide

n°1573439
theredled
● REC
Posté le 11-06-2007 à 20:42:37  profilanswer
 

flexx35 a écrit :

Salut

 

Theredled, je voudrais savoir si c'est nécessaire de convertir sa base en UTF-8 si tu dis qu'on peux la garder en ISO et afficher des choses en UTF-8 ?
J'imagine que pour stocker des données en UTF-8 il faut que la base soit elle même en UTF-8.
Comment se comporte PHP vis-à-vis d'une telle base ? Doit-on utiliser les fonctions encode/decode ?

 

Pourrais-tu m'indiquer également quelle version de MySQL tu utilises.
Est-ce que la version 4.0.15 supporte l'UTF-8 ?

 

Dernière chose, pourrais-tu m'indiquer comment modifier le charset de chaque table ?
Cette opération est nécessaire pour pouvoir convertir le contenu d'une ancienne table ISO en UTF-8 ?

 

Merci de ton aide


Ben écoute, en l'occurence, j'ai laissé ma table en ISO donc je suis pas le mieux expérimenté pour ce qui est de la migration de base vers UTF-8 :D

 

Pour ce qui est de la cohabitation BDD en ISO/code en UTF-8, en lui donnant un "SET NAMES 'UTF-8'" elle prend ce qui lui arrive, le lit comme de l'utf-8, et le retranscrit en ISO ; donc tu lui donnes un caractère chinois par exemple, elle ne pourra pas faire la correspondance, et je suppose qu'elle te mettra un '?' a la place.

 

Donc si tu veux des caractères spéciaux dans ta base : il faut qu'elle soit UTF-8
Sinon : tu fais comme tu veux.
Grâce au "SET NAMES", rien ne change au niveau du code (c'est l'intérêt de la chose).

 

Sinon je suis en MySQL 5. Apparemment ( http://www.dicodunet.com/actualite [...] -mysql.htm + la doc mySQL), l'UTF-8 n'est supporté que depuis la 4.1 par contre...


Message édité par theredled le 11-06-2007 à 20:43:31

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [mysql] UTF-8 :(

 

Sujets relatifs
[Résolu] problème avec Switch et MySQL[PHP/MYSQL] pourquoi ce script marche pas ?
Probleme d'utilisation de l'API C de mysql sous linux[RESOLU]comment faire tourner 1 serveur MySQL sur mon PC??
[Résolu] Php / MySQL - Région répétéeLecture/Ecriture fichier texte vs MySQL ?
Creation base de données Access ou Mysql - Interaction avec WordSyntaxe de mysql dans php
Utilisation d'une class de connexion MysqlFaire un dump d'une DB MySQL en UTF-8 Unicode ?
Plus de sujets relatifs à : [mysql] UTF-8 :(


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR