Bonjour,
J'amerais convertir un flux ISO-8859-1 en UTF-8 en perl... sans devoir passer par de fichiers ? y a-t-il un moyen ?
Je travaille avec perl 5.8.7, je reçois un flux en ISO-8859-1 et j'aimerais le convertir en UTF-8.
Je ne trouve pas de moyens à part en écrivant des fichiers, ce que j'aimerais éviter...
Y a-t-il des posibilités ? Quelqu'un peut m'aider ? Y existe-t-il des exemples ? Comment savoir le format du flux que j'obtiens ?
merci d'avance.
A bientôt
Gorry
# Utf8
Posté par Florent Bayle (site web personnel) . Évalué à 3.
[^] # Re: Utf8
Posté par gorry . Évalué à 1.
Merci pour ton lien c'est exatement ce que je cherchais.
J'utilise dans mon code perl :
use utf8;
puis
utf8::encode($monTxtISO);
puis
utf8::decode($monTxtUF8);
Mon but de de passer mon programme de Windows sur linux,
En entrée j'ai du ISO-8859-1ou du UTF-8, je convertis tout en UTF-8 puis à la fin je retourne le flux dans le format que j'ai reçu (ISO-8859-1ou du UTF-8).
Poutant j'ai des caractères dans mon code perl (avec Eclipse) qui passent mal, notement celui-ci : ° (U+00B0).
Pourtant j'ouvre le fichier sous eclipse au format UTF-8, tous mes fichier sont en utf-8. et j'indique use utf8;
De plus lorsque je lis un fichier UTF-8 au format UTF-8 dans mon expression régulière ça me génére quelques erreur du type :
Malformed UTF-8 character (unexpected non-continuation byte 0x00, immediately after start byte 0xc2) in pattern match (m//) at Lexical.pm line 136, line 83.
notament pour le caractère ÿ (U+00FF)
Pourtant il s'agir bien d'un fichier UTF-8 que j'ai converti sur Windows depuis cp1252 (Latin I) en UTF-8 par un programme en Java.
Ce qui est curieur c'est que le caractère ° vaut bien 00B0 selon ultraEdite ou le Chractere Map de Windows.
PAr contre avec un autre logiciel qui m'affiche sa valeure en EXA (Hackman) ce caractère ° se représente par 2 caractères : Â et ° (U+00C2 et U+00B0) .
si je mets dansmon code perl :
no utf8;
ça se passe bien MAIS mes expressiosn régulières ne sont plus correctement traités...
Je n'arrive pas à bout de ce problème. Si tu as d'autres url, je suis intéressé,
Je pars en vacances et je ne risque pas de te répondre avant 2006 Alors Bonne année et à+
Gorry
# Autre piste
Posté par Arthur Accroc . Évalué à 3.
while (<IN>) {
print OUT encode('utf8', decode('latin1', $_));
}
Voir man Encode ou perldoc Encode pour plus de précisions.
Encode::Guess pourrait aussi t'intéresser.
Tout cela est distribué avec Perl en standard.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Autre piste
Posté par gorry . Évalué à 1.
Meilleures voeux !
Gorry
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.