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

Requêtes MySQL Discussion :

Stockage de caractères accentués et ASCII (non imprimable)


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Par défaut Stockage de caractères accentués et ASCII (non imprimable)
    Bonjour,

    Je dois stocker dans une base mysql (5.0) des chaines de caractère contenant des caractères ASCII non imprimable et des caractère accentués.
    J'utilise une colonne VARCHAR avec un interclassement utf8_unicode_ci

    Les insertion fonctionnent bien (stockage de l'ASCII) si je n'ai pas d'accents dans ma chaine.
    Si elle comporte des accents, ces derniers sont bien stockés mais les caractère ASCII ne le sont pas. Que faire ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $chaine = 'Exemple de'.chr(29).'chaine';
    //Ceci est bien enregistré: Exemple de<29>chaine
     
    $chaine = 'Exemple de'.chr(29).'chaine accentée';
    //Ceci n'est pas bien enregistré: Exemple dechaine accentée
    //le caractre ascii 29 n'est pas stocké
    Note: les insertion se font en PHP

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 291
    Par défaut
    Quel est le jeu de caractères de ta page ? Quelle est ta requête d'insertion ? Quel est le test qui te permet de dire que le caractère 29 est absent ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Par défaut
    Quel est le jeu de caractères de ta page ?
    J'ai testé avec ma page encodée en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    Même résultat.

    Quelle est ta requête d'insertion ?
    La requête d'insertion est tout ce qu'il y'a de plus classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $chaine = 'Exemple de'.chr(29).'chaine';
    $sql = 'INSERT INTO tableTest (idtt, vals) VALUES (NULL, "'.$chaine.'")';
    mysql_query($sql);
    Quel est le test qui te permet de dire que le caractère 29 est absent ?
    J'ai un second programme qui vient lire ma table et transmet la chaine via un socket. Le programme client qui réceptionne cette chaine fait l'équivalent d'un explode() sur le carcactère 29. Sur une chaine ne comportant pas d'accents, l'explode() fonctionne. Ce n'est pas le cas si il y'a des accents.
    De plus, je visualise des [] (carrés) à la place des caractères non imprimables dans phpMyAdmin sur les chaine sans accents. Ce qui n'est pas le cas si j'insère la même chaine avec un caractère accentué en plus.

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 291
    Par défaut
    qq part dans le php.ini, il y a un paramétrage du jeu de caractères du code PHP...

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Par défaut
    Peux-tu me donner plus d'infos sur ce paramètre du php.ini ?

    Sinon j'ai tenter de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = 'INSERT INTO tableTest (idtt, vals) VALUES (NULL, CONCAT("Exemple de", CHAR(29), "chaine") )';
    $sql = 'INSERT INTO tableTest (idtt, vals) VALUES (NULL, CONCAT("Exemple de", CHAR(29), "chaine accentuée") )';
    Même problème, la 1ere insère bien mon caractère ASCII 29, la seconde l'ignore complètement et les accents sont bien inséré.

    Je ne comprend pas pourquoi l'ASCII ne passe pas. Dans tous les encodages, les 128 premiers caractères sont bien présent, non ?
    A la limite si il ne m'avait pas inséré les accents mais bien pris en compte l'ASCII j'aurais compris, mais là... je suis vraiment largué.
    HELP !

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 291
    Par défaut
    Citation Envoyé par psychomatt Voir le message
    Peux-tu me donner plus d'infos sur ce paramètre du php.ini ?
    Non, parce que je n'en sais pas plus . Tu pourrais sans doute le retrouver en allant chercher du côté des forums PHP.

    Ceci dit, au vu de tes deux dernières requêtes, le problème est bien dans MySQL et donc dans le passage de PHP à MySQL. Peux-tu les essayer avec ça ?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/06/2011, 17h54
  2. Caractères affichés comme non-imprimables
    Par Shugo78 dans le forum GTK+ avec C & C++
    Réponses: 15
    Dernier message: 13/06/2007, 14h28
  3. Imprimer les caractères accentués
    Par Thrystan dans le forum Debian
    Réponses: 1
    Dernier message: 05/06/2007, 17h13
  4. caractères non imprimables
    Par floflo_2006 dans le forum C
    Réponses: 6
    Dernier message: 11/09/2006, 10h17
  5. [CR] envoyer un caractère non imprimable
    Par nnj dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/07/2004, 08h56

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