Heim > Artikel > System-Tutorial > Umgang mit UTF8 mit Perl auf der Windows-Konsole
Die Konsole ist für die Verwendung von UTF8 ausgelegt und die angezeigten Schriftarten sind ebenfalls hässlich. Was sollen wir tun, wenn das Perl-Programm und die von Perl zu lesenden Dateien UTF8-Codierung verwenden? Schauen wir uns zunächst den folgenden Ablauf an:
#!/usr/bin/perl
Verwenden Sie die Kodierung 'utf8', STDIN=>'gb2312', STDOUT=>'gb2312';
open(FILE,"c:\test1.txt");
binmode(DATEI,":encoding(utf8)");
@lines=
close(DATEI);
for($i=0; $i
$lines[$i] drucken;
Drucken "n";
}
$str="Hallo";
print $str;
Dieses Programm verwendet Perl, um eine Textdatei test1.txt zu lesen und sie dann auf der Konsole anzuzeigen. Der Schlüssel ist:
1. Verwenden Sie die Kodierung 'utf8', STDIN=>'gb2312', STDOUT=>'gb2312';
Kodierung „utf8“ verwenden: Geben Sie das Kodierungsformat der Skriptdatei als utf8;
anSTDIN=>'gb2312', STDOUT=>'gb2312': Eingabe und Ausgabe verwenden den Zeichensatz GB2312.
Auf diese Weise können die chinesischen Zeichen im Perl-Skript ausgegeben werden.
2:binmode(FILE,":encoding(utf8)");
Geben Sie das Kodierungsformat der geöffneten Datei FILE als utf8 an, damit die Daten korrekt in @lines eingelesen werden können.
Dadurch kann Perl UTF8-Zeichen auf der Windows-Konsole verarbeiten.
Die drei Methoden sind wie folgt:
#!/bin/perl -w
streng verwenden;
my $str = "abcsfsaf#sdagasdga#sdgaghoiiopjh#dsfjkopa hkl;fjh#dsjfklpafj";
########### Methode 1
mein $pos = -1;
meine $num = 0;
while (($pos = index($str, "#", $pos)) >-1) {
print "gefunden bei $posn";
$pos++;
$num++;
}
print "Gefunden $num!n";
############################################ ###########
#Methode 2
my $count = 0;
while( $str =~ /#/g )
{
$count++;
}
print $count,"n";
#######################################
# Methode 3
mein $cc = 0;
mein $tmp = 0;
if( $tmp = () = ($str =~ /#/g ) )
{
$cc += $tmp;
}
drucken "$ccn";
#/usr/bin/perl
open (IN, 'D:\words.txt ') ||. die $!;
@words=();
in der Nähe;
open (OUT,'>','D:\wordlist.txt')oder sterben $!;
foreach $line(@words){
$line=~s/n//g;
@words=split /s+/,$line;
foreach $word(@words){
$word=~s/W+//;
$freq {$word}++;
print OUT $word ."=>" $freq{$word}."n";
}
}
schließen AUS;
Sie können dieses Programm ausprobieren. Die Datei kann den Originaltext direkt lesen, ohne ein Wort pro Zeile schreiben zu müssen! Bei Fragen kontaktieren Sie uns bitte!
#!/usr/bin/perl -w
streng verwenden;
die "perl $0 " es sei denn(@ARGV==1);
öffnen (IN,$ARGV[0]) oder sterben "Datei $ARGV[0]!n";
kann nicht geöffnet werdenopen (OUT,">data2") or die "Datei data2n kann nicht erstellt werden;
while(){
chomp;
mein @tmp=split /t/,$_;
for(my $tmpc=1;$tmpcif($tmp[$tmpc-1] eq $tmp[$tmpc]){
ausdrucken "$tmp[$tmpc-1]@2t@@@";
$tmpc++;
nächster;
}
print OUT „t$tmp[$tmpc-1]“;
}
ausdrucken"n";
}
Das obige ist der detaillierte Inhalt vonUmgang mit UTF8 mit Perl auf der Windows-Konsole. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!