hoshid a écrit 6 commentaires

  • [^] # Re: avec un fichier txt

    Posté par  . En réponse au message substition avec perl et utf-8. Évalué à 1.

    tiens c'est marrant car finalement

    ▸ perl -pe 'use encoding utf8 ; s/./à/' < test.txt
    renvoie bien "àcole", même sans l'option -C

    alors que
    ▸ perl -pe 'use encoding utf8 ; s/./à/' test.txt
    renvoie "à�cole" s'il n'y a pas l'option -C

    :-/
    bon faut que j'arrête de flooder moi...
  • # avec un fichier txt

    Posté par  . En réponse au message substition avec perl et utf-8. Évalué à 1.

    En fait j'ai parlé un peu trop vite en disant que je laissais tomber l'option -C

    Si j'ai par exemple un fichier txt en utf8 avec dedans école: "echo école > test.txt"

    La ligne suivante ne fonctionne pas niveau encodage et renvoie "à�cole" !
    ▸ perl -pe 'use encoding utf8 ; s/./à/' test.txt

    En revanche c'est bon avec :
    ▸ perl -C -pe 'use encoding utf8 ; s/é/à/' test.txt
    et
    ▸ perl -C -pe 'use encoding utf8 ; s/./à/' test.txt

    C'est un peu lourd quand même… :-(
  • [^] # "use encoding utf8"

    Posté par  . En réponse au message substition avec perl et utf-8. Évalué à 1.

    Bon j'ai fini par laisser tomber l'option -C et j'ai appris qu'on pouvait spécifier "use encoding" avec "utf8" ou ":locale"

    Avec cela le résultat est bon dans les deux cas :
    ▸ echo école | perl -pe 'use encoding utf8; s/./à/'
    ou
    ▸ echo école | perl -pe 'use encoding utf8; s/é/à/'

    En revanche j'aimerais bien savoir s'il n'y a pas moyen que Perl utilise par défaut l'utf-8, histoire de ne pas avoir à le préciser tout le temps.

    (je vais aussi chercher de mon côté, mais demain…)
  • [^] # Re: solution ?

    Posté par  . En réponse au message substition avec perl et utf-8. Évalué à 1.

    Merci mais c'est assez incompréhensible en pratique pour moi

    Émettons que je veuille remplacer école par àcole :

    Ceci fonctionne :
    ▸ echo école | perl -CI -pe 's/./à/'

    Mais ceci ne fonctionne pas (renvoie "�ole" )
    ▸ echo école | perl -CI -pe 's/é/à/'

    d'un autre côté ceci fonctionne :
    ▸ echo école | perl -C -pe 's/é/à/'

    Mais pas ceci (renvoie "Ã cole") :
    ▸ echo école | perl -C -pe 's/./à/'


    J'ai beau essayer toutes les combinaisons pour l'option -C, aucune ne semble fonctionner à la fois pour 's/./à/' et 's/é/à/'
  • # solution ?

    Posté par  . En réponse au message substition avec perl et utf-8. Évalué à 1.

    Tiens, en essayant un peu par hasard d'ajouter l'option -C comme dans une ligne de code que je viens de voir sur cette page : http://www.cl.cam.ac.uk/~mgk25/unicode.html#perl

    et bien ça fonctionne :

    echo école | perl -C -pe 's/^./e/'

    Le résultat est correct !

    Je ne sais même pas ce que signifie ce -C (un tour dans "man perl" ne m'a pas renseigné)

    Je vais encore chercher, mais si quelqu'un peut me le dire…
  • # correction

    Posté par  . En réponse au message substition avec perl et utf-8. Évalué à 1.

    En fait le rendu est finalement correct sur le forum, c'est à la pré-visualisation que ça n'allait pas.

    ps : désolé pour l'erreur dans le titre et je voulais écrire "je l'utilise un peu". Mais on ne peut apparemment pas éditer sur ce forum.