IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Besoin d'explications sur les charset


Sujet :

SQL Procédural MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Besoin d'explications sur les charset
    Bonjour,
    Je dois faire cohabiter les bases de données de 2 programmes différents sur un serveur mysql (version 4.1.16)
    Le 1er prog. est écrit en VB, utilise l'ADODB, et attend des résultats en Latin1.
    Le second est écrit avec RealBasic, et fonctionne en utf8.
    Pour les bases respectives, j'ai bien précisé le codage des tables, latin1 pour une bdd, utf8 pour l'autre.
    J'ai vérifié (Navicat), chaque table a bien le codage qu'il lui faut.
    Jusque là, tout va bien. Les données sont stockées correctement dans le format spécifié.
    Mais je viens de me rendre compte que les recordset retournés utilisent le codage par defaut de mysql, et non le codage spécifié au niveau des tables (ou bdd).
    Ca rend mon projet non viable : suivant le default charset que je fixe pour mysql, c'est le prog qui attend des données en utf8 qui reçoit du latin1, ou l'inverse.
    Y a-t-il un moyen de récupérer les recordsets dans le codage spécifié au niveau des tables (ou de la bdd, je ne fais pas de mix au sein d'une même database).
    Par avance, merci et bonne journée !

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 232
    Points : 15 525
    Points
    15 525
    Par défaut
    regarde si tu arrives à avoir quelque chose d'utilisable avec la fonction CONVERT :
    http://dev.mysql.com/doc/refman/5.0/fr/charset-convert.html

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Effectivement, ca peut être une solution pour par exemple fonctionner avec mysl en utf8 par défaut, mais transférer en latin1 les infos pour mon prog qui ne comprend que ça.
    Merci beaucoup

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Résolu : J'ai trouvé beaucoup mieux, je vous l'explique si ça peut servir :
    Il suffit d'utiliser la commande SET NAMES()
    Exemple dans mon cas : SET NAMES('latin1') juste après l'ouverture de ma base.
    A partir de là, mysql me renvoit tout en Latin1 à mon vieux prog qui ne comprend que ça. Il reçoit du Latin1 et se charge d'enregistrer en utf8.

    Autrement, le dialogue entre mysql et le client est complètement indépendant du format de stockage des données. C'est géant !

    (Désolé pour mon enthousiasme débordant, ca me retire une telle épine du pied !!!)

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 232
    Points : 15 525
    Points
    15 525
    Par défaut
    attention, n'oublie pas de vérifier que l'effet de cette commande existe encore une fois que le serveur est redémaré

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oulah... Ca ne serait pas valable que pour le 'client' qui utilise cette commande ? J'ai intérêt de me méfier, j'ai d'autres programmes qui attaquent le même serveur mais en utf8...
    J'essaye ça demain matin et je vous dis ! (merci !)

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 232
    Points : 15 525
    Points
    15 525
    Par défaut
    Citation Envoyé par EGPMS
    Oulah... Ca ne serait pas valable que pour le 'client' qui utilise cette commande ?
    ah oui je n'ai pas pensé à ça !
    je pensais que c'est peut-être une commande qui modifie le comportement du serveur pendant un bon bout de temps mais ensuite si le serveur est redémarré il va chercher les valeurs dans le fichier de configuration et oublier ta commande "SET NAMES"

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Alors j'ai testé scrupuleusement, et je confirme :
    L'utilisation de la commande SET NAMES(charset) ne modifie pas le mode de fonctionnement global de mysql, mais uniquement la session qui a utilisé cette commande.
    Autrement dit, je n'ai rencontré aucun problème : mon vieux programme qui utilise SET NAMES('latin1') juste après l'ouverture de la bdd reçoit des données en latin1, et envoie des données en latin1 à mysql qui se charge de les stocker en utf8 (Default charset de mon mysql).
    Et dans le même temps, un programme récent attaque le même serveur en utf8 sans rien avoir à préciser.
    C'est nickel !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'explications sur les membres calculés
    Par JackylRadis dans le forum SSAS
    Réponses: 4
    Dernier message: 16/04/2012, 10h56
  2. besoins d'explication sur les génériques
    Par lao.patrick dans le forum C#
    Réponses: 6
    Dernier message: 03/06/2010, 10h51
  3. Besoin d'explication sur les fonctions
    Par amateurc dans le forum Général Java
    Réponses: 7
    Dernier message: 05/01/2010, 14h32
  4. Besoin d'explication sur les imports
    Par Chicard dans le forum Langage
    Réponses: 13
    Dernier message: 14/08/2007, 16h24
  5. [Tableaux] Besoin d'explications sur les tableaux imbriqués
    Par gateaubasque dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2007, 09h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo