Maison > Article > Tutoriel système > Comment gérer UTF8 avec Perl sur la console Windows
La console est conçue pour utiliser UTF8, et les polices affichées sont également laides Que devons-nous faire lorsque le programme Perl et les fichiers à lire par Perl utilisent l'encodage UTF8 ? Jetons d'abord un coup d'œil à la procédure suivante :
#!/usr/bin/perl
utilisez l'encodage 'utf8', STDIN=>'gb2312', STDOUT=>'gb2312';
open(FILE,"c:\test1.txt");
binmode(FILE,":encoding(utf8)");
@lines=
fermer(FICHIER);
pour($i=0; $i
imprimer $lines[$i];
imprimer "n";
}
$str="Bonjour";
imprimer $str;
Ce programme utilise Perl pour lire un fichier texte test1.txt, puis l'affiche sur la console. La clé est :
1. utilisez l'encodage 'utf8', STDIN=>'gb2312', STDOUT=>'gb2312';
utiliser l'encodage 'utf8' : spécifiez le format d'encodage du fichier de script comme utf8 ;
STDIN=>'gb2312', STDOUT=>'gb2312' : l'entrée et la sortie utilisent le jeu de caractères GB2312.
De cette façon, les caractères chinois du script Perl peuvent être affichés.
2:binmode(FILE,":encoding(utf8)");
Spécifiez le format d'encodage du fichier ouvert FILE comme utf8, afin que les données puissent être lues correctement dans @lines.
Cela permet à Perl de traiter les caractères UTF8 sur la console Windows.
Les trois méthodes sont les suivantes :
#!/bin/perl -w
utilisez strict ;
mon $str = "abcsfsaf#sdagasdga#sdgaghoiiopjh#dsfjkopa hkl;fjh#dsjfklpafj";
########### Méthode 1
mon $pos = -1;
mon $num = 0;
while (($pos = index($str, "#", $pos)) >-1) {
print "trouvé chez $posn";
$pos++;
$num++;
}
print "Trouvé $num!n";
############################################ ### ###########
#Méthode 2
mon compte $ = 0 ;
pendant( $str =~ /#/g )
{
$compte++;
}
imprimer $count,"n";
######################################
#Méthode 3
mon $cc = 0;
mon $tmp = 0;
if( $tmp = () = ($str =~ /#/g ) )
{
$cc += $tmp;
}
imprimer "$ccn";
#/usr/bin/perl
ouvrir (IN, 'D:\words.txt ') || mourir $!;
@words=();
fermer IN;
ouvrez (OUT,'>','D:\wordlist.txt')ou mourez $!;
foreach $line (@words){
$line=~s/n//g;
@words=split /s+/,$line;
foreach $word (@words){
$mot=~s/W+//;
$fréq {$mot}++;
imprimer OUT $word ."=>" $freq{$word}."n";
.}
}
clôture ;
Vous pouvez essayer ce programme, le fichier peut lire le texte original directement sans avoir à écrire un mot par ligne ! Si vous avez des questions, veuillez nous contacter !
#!/usr/bin/perl -w
utilisez strict ;
die "perl $0 " à moins que (@ARGV==1);
ouvrir (IN,$ARGV[0]) ou mourir "Impossible d'ouvrir le fichier $ARGV[0]!n";
ouvrir (OUT,">data2") ou mourir "Impossible de créer le fichier data2n";
pendant(){
chomp;
mon @tmp=split /t/,$_;
pour(mon $tmpc=1;$tmpcif($tmp[$tmpc-1] eq $tmp[$tmpc]){
imprimer "$tmp[$tmpc-1]@2t@@@";
$tmpc++;
suivant ;
}
imprimer "t$tmp[$tmpc-1]";
}
imprimer OUT"n";
}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!