J'ai donc des fichiers texte utf8, que je veux lire, placer les lignes dans un tableau et les imprimer. Mais la sortie cependant n'imprime pas correctement les signes, par exemple la ligne de sortie ressemble à ce qui suit:sortie perl - Echec de l'impression correcte des fichiers texte utf8
« arnÅ¿tein gehört gräflichen »
donc j'ai essayé de tester le script par une ligne, collé directement dans le script Perl, sans le lire à partir du fichier. Et là, la sortie est parfaitement bien. J'ai vérifié les fichiers, qui sont en utf8 unicode. Toujours les fichiers doivent provoquer le problème de sortie (?).
Parce que le script est trop long, je coupe juste jusqu'à la pertinente: (pour accéder au répertoire, ouvre des fichiers, conduit l'entrée à la fonction & align, Anaylse, l'ajouter à un tableau, imprimez le tableau
#!/usr/bin/perl -w
use strict;
use utf8;
binmode(STDIN,":utf8");
binmode(STDOUT,":utf8");
binmode(STDERR,":utf8");
#opens directory
#opens file from directory
if (-d "$dir/$first"){
opendir (UDIR, "$dir/$first") or die "could not open: $!";
foreach my $t (readdir(UDIR)){
next if $first eq ".";
next if $first eq "..";
open(GT,"$dir/$first/$t") or die "Could not open GT, $!";
my $gt= <GT>;
chomp $gt;
#directly pasted lines in perl - creates correct output
&align("det man die Profeſſores der Philoſophie re- ");
#lines from file - output not correct
#&align($gt);
close GT;
next;
}closedir UDIR;
}
Une idée?
merci, je pensais que "binmode" définirait le flux d'entrée déjà sur utf8 mais évidemment pas :) –
'binmode' définit UTF-8 pour le handle de fichier sur lequel vous l'appelez. Lorsque vous ouvrez explicitement un fichier, son encodage n'a rien à voir avec ce que STDIN ou STDOUT utilise. – cjm