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

Modules Perl Discussion :

Problème de caractères accentués avec CAM::DBF


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Par défaut Problème de caractères accentués avec CAM::DBF
    Hello,

    J'ai trouvé (un peu par hasard) un script perl qui converti tranquillou un fichier .dbf en fichier .csv. Le soucis c'est que les caractères accentués ressortent pas correctement .

    Diantre me dis-je !! Mais pourquoi petit scarabé n'utilises-tu pas directement le module CAM:: DBF ?!?!?

    Voilà qui est fait avec un bout de programme très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #!/usr/bin/perl
     
    #####################################################################################
    # conversion dbf -> excel
    #####################################################################################
     
    use strict;     #vérifie que toutes les variables sont bien déclarées avec my
    use Carp;       #Recherche les erreurs de syntaxe dans le programme
    use warnings;
    use CAM::DBF; # Perl extension for reading and writing dBASE III DBF files
     
    my $file = "info_adm.DBF"; # infos administratives
     
    my $dbf = new CAM::DBF($file); # ouverture de la BD
     
    print $dbf->toText(0,-field => ',', -enclose => '', -showheader => 1);
    Forcément, j'ai le mème soucis, à savoir que éèàçêô est transformé en ‚Š…‡ˆ“

    Bref, est-il possible de contrôler ça ? Ca vient de perl et/ou de dbf ? Je précise que je travaille sous windows XP avec active perl.

    Si une âme charitable a une idée lumineuse ...

    Usti

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Si tu veux dire que la sortie sur la console contient n'importe quoi à la place des caractères accentués, essaie d'exécuter un script qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "éàïù\n";
    Et tu t'aperçevras que le problème ne vient pas de DBF (ni de Perl) mais tout simplement de la console Windows qui n'utilise pas le même encodage par défaut que le reste de Windows...
    Si tu rediriges ton résultat vers un fichier tu t'aperçevras qu'il ne présente aucun problème.

    Il existe plusieurs façon de régler le problème, ma préférée étant de changer la page de code utilisée par la console Windows (elle utilise la ~ 800, il faut utiliser la 1252) sans oublier de changer sa police (car la police originelle de la console ne supporte pas la cp1252).

    --
    Jedaï

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Par défaut
    Hum ...

    En fait j'utilise déjà cette astuce pour la console que tu m'avais donnée il y a quelques temps

    Pour la sortie direct sur un fichier, en transformant mon code en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    open V3,"> testDBF.txt"; 
     
    print V3 $dbf->toText(0,-field => ',', -enclose => '', -showheader => 1);
    cela donne ça : ‚Š…‡ˆ“

    Sinon je peux envisager de prévoir tous les caractères accentués et leur transformation, et de les retransformer ensuite

    Usti

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Etrange, peut-être s'agit-il d'un problème d'encodage alors... Sais-tu quel est l'encodage de ton dbf et l'encodage utilisé par défaut par CAM:BF ?

    --
    Jedaï

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 38
    Par défaut
    Euh, ben, c'est à dire ...

    J'ai pas trouvé justement où voir quel était l'encodage de mon dbf. En fait c'est une base hyperfile (sous DOS) qui est extraite en quickbasic pour générer les dbf (je précise que ce n'est pas moi qui gère cette partie là, je n'ai pas touché au basic depuis mon IBM PC portable à 4,77 MHz )

    Je vois pas d'autre solution que de repérer en quoi sont transcrits les caractères accentués, et à les remplacer dans mon programme perl par l'accent originel, mais j'ai pas encore testé.

    Usti

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/07/2011, 15h12
  2. Caractères accentués avec <html:link>
    Par papysam dans le forum Struts 1
    Réponses: 5
    Dernier message: 25/05/2007, 15h18
  3. problème de caractères accentués (type êéè)
    Par zarbi61 dans le forum Général Python
    Réponses: 4
    Dernier message: 19/05/2006, 20h12
  4. caractères accentués avec Tsearch2
    Par nilytel dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 25/05/2005, 11h34
  5. [MiniPascal] Problème de caractères accentués
    Par Clandestino dans le forum Autres IDE
    Réponses: 3
    Dernier message: 03/10/2004, 13h12

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