Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/03/2011, 16h58   #1
Invité régulier
 
Sebastien
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Sebastien

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 7
Points : 7
Par défaut Requête UTF-8 vers base MySQL 4.0 Latin1

Bonjour,

Voilà 2h que je me tue à essayer de résoudre ce problème :
J'ai une requête comportant un champs "NClés", qui est mal interprétée à cause de l'accent...

J'ai essayé moult fonctions d'encodage en PHP et rien y fait, je ne gère pas la base, le champs doit donc rester tel quel.
J'ai essayé également l'instruction SET NAMES 'utf8' qui me renvoit un joli "Requête invalide : Unknown system variable 'NAMES' ".

Que faire ? Que fait la police ? Pourquoi les gens s'amusent-ils à mettre des accents dans les noms de colonnes ? Quel est le muscle ?

Edit : j'ai précisé que la base est en 4.0 car les fonctions qui permettent de changer l'encodage (character_set_results par ex.) n'ont été implémentées qu'à partir de la 4.1 ...
sebasc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 08h58   #2
Invité régulier
 
Sebastien
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Sebastien

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 7
Points : 7
Personne pour éclairer ma lanterne ?
Je vais tenter un select * et une récupération différente, ce que je voulais éviter mais tant pis !

Edit : temporairement, une seconde requête séparée a été effectuée (mêmes critères avec un select *) afin de récupérer uniquement le champs avec accent... et le récupérer avec mysql_fetch_array() en accédant à son indice.

C'est moche, mais si certains bloquent et que ça peut aider...

Sinon il y a la fonction SET CHARACTER SET('encodage') mais seul le jeu cp1251_koi8 est disponible par défaut, j'ai donc du demander l'ajout du mapping utf8 au gérant de la base pour pouvoir peut-être utiliser ce dernier recours.
sebasc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 10h25   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 993
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 993
Points : 18 246
Points : 18 246
Envoyer un message via MSN à CinePhil
Effectivement, nommer une colonne (et pas champ ! ) avec un accent est une mauvaise idée !

Pendant que tu iras engueuler le concepteur de la BDD, profites-en pour lui dire que MySQL 4 ça fait belle lurette que c'est obsolète !

Sinon il faut peut-être que ce soit ton fichier PHP qui soit encodé en Latin1 pour que le bon caractère soit bien interprété par l'ancêtre MySQL 4 ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/03/2011, 15h28   #4
Invité régulier
 
Sebastien
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Sebastien

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 7
Points : 7
En effet, LoLesque pour un soit-disant spécialiste en solution BDD

Il n'y a d'après eux aucune raison pour mettre à jour, éventuels problèmes de compatibilités au niveau des connecteurs ODBC, ils ne peuvent pas changer les noms de champs cause que z'ont plein de clients... Du blabla en somme.
D'autant que j'ai vu que 4.0 vers 4.1 c'est pas si dangereux, et pas la mer à boire !

Et pour la petite histoire, dans la lignée base bien pensée, ils utilisent aussi des double pour des données qui ne nécessitent pas plus que int, et encore... (genre nombre de pièces pour un logement).

Maintenant je sais que mysql 4.0, c'est mal

Edit : pour le fichier en latin1, j'ai aussi essayé... sans succès. Et le site est en utf8, ce qui n'arrange rien (conversions massivent)
sebasc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h34.


 
 
 
 
Partenaires

Hébergement Web