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

  1. #1
    Nouveau membre du Club
    Caractères accentués non pris en charge par textscan avec Octave 4.0
    Bonjour
    J'ai un problème d'import sur les caractères accentués avec des fichiers csv. Par exemple, avec le fichier joint que je lis avec le code suivant :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fid = fopen('test_lecture.txt') ;
    testc2=textscan(fid,"%s %s","delimiter",";")
    fclose(fid)




    Le résultat est :
    [1,1] =
    {
    [1,1] = Bonjour
    [2,1] = BlÚ
    [3,1] = Ma´s
    }
    [1,2] =
    {
    [1,1] = beautÚ
    [2,1] = h¶pital
    [3,1] = ÚtrangÞre
    }

    Lorsque je teste avec la version 3.6.4 et QtOctave sur le même ordinateur, tout se passe bien, je retrouve les accents graves, aigus, circonflexe et trémas. J'ai fait des tests avec notepad++ pour faire varier l'encodage depuis l'Ansi mais je ne trouve pas la solution.
    Merci de votre aide
    Didou139

  2. #2
    Rédacteur/Modérateur

    Le problème se trouve plutôt du coté de l'interprétation des caractères dans le terminal de Octave :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> testc2{1}{2}
    ans = BlÚ
    >> testc2{1}{2}+0
    ans =
     
        66   108   233
     
    >> dos(['echo ' testc2{1}{2}]); % Avec un codepage 850
    Blé
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et Arduino)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau membre du Club
    Correctif global
    Bonjour Dut et merci !
    Effectivement la commande dos(['echo ' testc2{1}{2}]) fonctionne. Par contre, je ne vois pas comment l'intégrer dans mon code pour régler le problème. Au cours de mes lectures sur les forums, j'avais compris qu'il fallait insérer la commande dos('chcp 65001'). Du coup c'est peut être une erreur.
    Encore merci pour votre aide
    Didou139

  4. #4
    Nouveau membre du Club
    Correctif final
    Citation Envoyé par Didou139 Voir le message
    Bonjour Dut et merci !
    Effectivement la commande dos(['echo ' testc2{1}{2}]) fonctionne. Par contre, je ne vois pas comment l'intégrer dans mon code pour régler le problème. Au cours de mes lectures sur les forums, j'avais compris qu'il fallait insérer la commande dos('chcp 65001'). Du coup c'est peut être une erreur.
    Encore merci pour votre aide
    Didou139
    Je reviens suite à des tests concluants : effectivement le changement du codepage dos('chcp 65001') est une erreur. Il faut revenir au codepage 1252 avec la commande dos('chcp 1252') et cela fonctionne.
    Merci à Dut de m'avoir aiguillé vers le vrai problème.