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

MATLAB Discussion :

Encodage des scripts .m


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut Encodage des scripts .m
    Bonjour à vous,
    aujourd'hui je tente de résoudre un problème qui me colle au train depuis 2 ans.

    J'écris mes scripts, parfois sous linux avec un simple éditeur de texte, parfois sous mac avec l'éditeur intégré de Matlab. L'encodage par défaut de linux est l'UTF-8, celui de Matlab: ISO-8859-1. J'ai donc des soucis d'accents quand je promène mes scripts d'un OS à l'autre.

    J'ai essayé de changer l'encodage de Matlab avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    slCharacterEncoding(UTF-8)
    Visiblement il ne reconnait que quelques formats et pas l'UTF-8.
    J'ai entendu dire qu'on pouvait préciser l'encodage des scripts dans l'en-tête avec les commentaires, un peu comme les scripts bash. Qu'est ce que ça donne? Et comment s'en sortir avec ces encodages?

    Bien sûr, j'aimerais éviter d'utiliser un autre éditeur sous mac et il est hors de question de changer l'encodage de linux (tout mes documents sont en UTF-8). Qu'en dites vous?

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Il manque les quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    slCharacterEncoding('UTF-8')
    Mais bon pas sure que ce soit vraiment le problème.
    Cette commande est utilisée a priori pour les modèles Simulink (elle est d'ailleurs disponible dans Simulink)
    Peux-tu nous préciser tes versions de MATLAB sur chaque OS ?
    Et comment "promènes"-tu tes scripts d'un OS à l'autre ?

    A une époque lointaine où je travaillais à la fois sur station SUN et sur Windows avec mon MATLAB antédiluvien (pas d'éditeur sur SUN), je passais par un utilitaire DOS2UNIX et inversement à chaque fois que je transférais mes fichiers d'une machine sur l'autre (c'était comme on peut l'imaginer super fun...)

  3. #3
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    J'ai cru à un miracle!! Mais j'ai fais quelques tests.. en fait non, ça marche pas. Alors:
    Currently, MATLAB supports: 'US-ASCII', 'Shift_JIS', 'ISO-8859-1',
    'IBM-5348_P100-1997', 'cp1252'.
    Pourtant après avoir testé ta commande Caro:
    >> slCharacterEncoding

    ans =

    UTF-8
    Et là j'ai commencé à écrire ma réponse ravi en faisant malgrè tout quelques tests. Finalement, fausse joie:

    Pour info:
    sous mac OS X: Matlab 7.4.0.287 (R2007a)
    sous linux debian: octave 2.1 (mais ça on s'en fout), gedit encodage UTF-8 (éditeur par défaut de debian sous lequel j'écris mes script et tout mes docs sous linux).

    Je suis pour l'instant sous mac.
    - J'ai crée un .m avec matlab puis je l'ai ouvert avec textedit (editeur de texte par défaut du mac) en encodage UTF-8 -> les accents sont replacés par des signes bizarres. Par contre quand je l'ouvre avec l'encodage 'occidental mac os', qui m'a l'air équivalent à 'ISO-8859-1', ca marche. J'en conclue que matlab continue d'encoder en ISO-8859-1'.
    - J'ai crée un fichier en UTF-8 sous textedit, puis j'ai essayé de l'ouvrir avec matlab, même soucis avec les accents. Matlab ne lit pas correctement les UTF-8.

    Tout ça malgrè le fait que lui me dise le contraire.

    Du coup Matlab ment .

    Généralement, j'écris mes documents sous linux (rapports et scripts) et je les promène avec une clé usb pour avoir avec moi les dernières versions de mes docs. J'ai configuré l'éditeur latex du mac pour l'UTF-8 et je voulais faire pareil avec matlab. C'est juste un soucis d'accents, dans les commentaires et les chaines de caractères, qui m'oblige à faire gaffe. Rien de bien méchant.

    Mais merci pour ton aide Caro. Et désolé pour cette réponse tardive.

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Sinon, solution à 2 sous :
    Ne pas mettre d'accent
    Dans les commentaires ça ne coute rien.
    Et pour les chaines de caractères, plus sioux : concaténer avec la valeur ascii : ça rend la lisibilité peu lisible mais du coup tu n'auras plus d'accents dans tes fichiers m
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str=['pens',char(233),'e']
    Joli, non ? (note : on peut se passer du char et mettre directement 233)

  5. #5
    Membre habitué
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Excellent!
    Et maintenant: comment faire pour mettre des accents dans les commentaires?

    Non, bon, ça suffit, je vais me contenter de cette encodage matlab/ISO et puis je m'arrangerais avec mon éditeur sous linux. Enregistrer en ISO de temps en temps, ça va pas me tuer.

    A plus et merci.

    PS: Je garde sous le main cette idée de code ASCII.

  6. #6
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    A tester, changer la variable d'environnement LANG avant de lancer MATLAB:
    setenv LANG us_en.UTF-8

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Par défaut
    Pour convertir des scripts déjà écrit d'un encodage à un autre, il faut utiliser iconv. Cet utilitaire devrait être installé avec ta distribution linux.

Discussions similaires

  1. encodage de base des scripts python
    Par airod dans le forum Zope
    Réponses: 1
    Dernier message: 26/04/2011, 15h48
  2. Des scripts très communiquant
    Par shinux2004 dans le forum Langage
    Réponses: 2
    Dernier message: 19/07/2005, 18h05
  3. [Eclipse 2.1] Encodage des fichiers pour un projet
    Par _-Sky-_ dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/05/2005, 22h26
  4. Réponses: 1
    Dernier message: 23/02/2005, 11h23
  5. [XML] encodage des accents
    Par matonfire dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 05/05/2004, 15h48

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