2 votes

Écrire un fichier en mode UTF-8 en utilisant Perl

Je dois écrire un fichier en mode UTF-8 en Perl. Comment puis-je le créer ?

Quelqu'un peut-il m'aider dans ce cas ?

J'essaie comme ceci, trouvez mon code ci-dessous,

use utf8;
use open ':encoding(utf8)'; 
binmode(FH, ":utf32");

open(FH, ">test11.txt"); 
print FH "something Çirçös";

Il s'agit de créer un fichier au format UTF-8. Mais j'ai besoin de m'assurer que cela se produit à partir de ce script. Parce que si j'écris un fichier sans utiliser l'encodage utf8 également, le contenu du fichier est automatiquement pris comme format UTF-8.

6voto

ikegami Points 133140

Vous voulez

use utf8;                       # Source code is encoded using UTF-8.

open(my $FH, ">:encoding(utf-8)", "test11.txt")
    or die $!;

print $FH "something Çirçös";

ou

use utf8;                       # Source code is encoded using UTF-8.
use open ':encoding(utf-8)';    # Sets the default encoding for handles opened in scope.

open(my $FH, ">", "test11.txt")
    or die $!;

print $FH "something Çirçös";

Notes :

  • L'encodage que vous voulez est utf-8 (insensible à la casse), et non utf8 (un encodage spécifique à Perl).
  • N'utilisez pas de variables globales ; utilisez des variables lexicales ( my ) vars.
  • Si vous omettez l'instruction à coder, vous aurez peut-être de la chance et obtiendrez la bonne sortie (ainsi qu'un avertissement "caractère large"). Ne comptez pas là-dessus. Vous n'aurez pas toujours de la chance.

    # Unlucky.
    $ perl -we'use utf8; print "é"' | od -t x1
    0000000 e9
    0000001
    
    # Lucky.
    $ perl -we'use utf8; print "é♡"' | od -t x1
    Wide character in print at -e line 1.
    0000000 c3 a9 e2 99 a1
    0000005
    
    # Correct.
    $ perl -we'use utf8; binmode STDOUT, ":encoding(utf-8)"; print "é♡"' | od -t x1
    0000000 c3 a9 e2 99 a1
    0000005

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X