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

VB.NET Discussion :

Decoder de l'UTF8 provenant d'une base de donnée


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 159
    Par défaut Decoder de l'UTF8 provenant d'une base de donnée
    Bonjour,

    J'ai un soucis, j 'ai une base de donnée encodée en UTF8 ce qui a pour consequence lorsque je veux recupéré par exemple un statut dans une table et que j'affiche le resultat j'ai "Transféré" or biensur j'aimerais avoir "Transféré".

    Existe il un moyen de stipuler le format directement dans le datareader ou au niveau des fonctions odbc? Sinon Il y a t il une fonction qui permet de faire ca proprement histoire de pas trop polluer mon code. J'ai cherché et le mieux que j ai reussi a trouver c est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Encoding.UTF8.GetString
    Et au dela du fait que ca ne me satisfait pas je n arrive pas a le faire fonctionner j'ai une erreur si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim buffer As Byte() = System.Convert.FromBase64String("é")
            Dim s As String = Encoding.UTF8.GetString(buffer)
    msgbox(s)
    Merci bcp j ai cherché pas mal avant de vous demander mais bizarrement on dirait que peu de personnes sont dans cette situation ils veulent encoder mais pas decoder

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Qu'est-ce que c'est comme type de base de données?

    Normalement ce genre d'option se configure au niveau de la chaine de connexion

  3. #3
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    +1 pour la chaine de connexion.
    J'imagine que tu n'utilises pas d'ORM ?

    Sinon je ne comprends pas dans ton exemple l'utilisation de ton buffer...
    En quoi est-il lié à ta base ?

    Et c'est logique que ça ne marche pas, car un caractère UTF-8 peut être en 1 à 4 octets, alors que System.Convert.FromBase64String() t'en retournerait systématiquement un seul. Comme ce n'est pas cohérent il te retourner une erreur.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Er3van Voir le message
    Et c'est logique que ça ne marche pas, car un caractère UTF-8 peut être en 1 à 4 octets, alors que System.Convert.FromBase64String() t'en retournerait systématiquement un seul. Comme ce n'est pas cohérent il te retourner une erreur.
    Bah c'est surtout que FromBase64String sert à décoder une chaine en base64, donc ça n'a absolument rien à voir avec l'encodage... "é" n'est pas une chaine en base64, c'est une chaine UTF8 qui a été décodée en ANSI

    On doit pouvoir faire la conversion comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Dim buffer As Byte() = Encoding.Default.GetBytes("é")
            Dim s As String = Encoding.UTF8.GetString(buffer)
    Mais bon, c'est de la grosse bidouille, il vaudrait mieux régler le problème au niveau de la base

  5. #5
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    En plus oui, j'étais resté focus sur l'encodage uniquement... (j'ai même traduit les deux caractères en binaire pour voir ce que ça aurait donné en UTF-8... xD)

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Par défaut
    Bonjour,

    Qu'est-ce que c'est comme type de base de données?

    Normalement ce genre d'option se configure au niveau de la chaine de connexion
    Pour certaines bases de données utilisées par des SIG, comme PostGis (Postgres/postgis) l'encodage se définit directement lors de la création de la base. On retrouve cela aussi dans les fichiers de formats shape (ESRI) ou MapInfo.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 159
    Par défaut
    Merci pour vos reponses mais au final j'ai changé l encodage de la base direct de maniere a avoir des caracteres normaux a l interieur c est plus simple que de rentrer ds une galere pour traiter chaque chaine

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/08/2011, 14h16
  2. Afficher image en provenance d'une base de données
    Par KRis dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 24/03/2010, 13h09
  3. [SGBD]Actualiser données provenant d'une base de données
    Par ducker88 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 11/01/2007, 14h44
  4. [SQL] réduire les images provenant d'une base de données
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/06/2006, 10h48
  5. Réponses: 11
    Dernier message: 08/06/2006, 18h07

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