跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

如何在Windows控制台上利用Perl处理UTF8

如何在Windows控制台上利用Perl处理UTF8制定控制台使用UTF8,显示出来的字体也很难看,当Perl程序和Perl要读取的文件都使用UTF8编码时,怎么办呢?先看如下程序:#!/usr/bin/perl use encoding 'utf8', STDIN=>'gb2312', STDOUT=>'gb2312';open(FILE,"c:\test1.txt");binmode(FILE,":encoding(utf8)");@lines=;close(FILE);for($i=0; $i print $lines[$i];print "";}$str="你好";

print $str;该程序用Perl去读取一个文本文件test1.txt,然后显示到控制台上。关键在于:1. use encoding 'utf8', STDIN=>'gb2312', STDOUT=>'gb2312';use encoding 'utf8' : 指定该脚本文件的编码格式为utf8;STDIN=>'gb2312', STDOUT=>'gb2312': 输入和输出采用GB2312字符集。

这样,Perl脚本中的的汉字即可被输出。

2:binmode(FILE,":encoding(utf8)");指定打开的文件FILE的编码格式为utf8,这样就能正确的读入数据到@lines中了。

这样就实现了Perl在Windows控制台上处理UTF8字符了。

Perl如何读取文本的最后一行非空字符串

三个方法如下:

#!/bin/perl -w use strict;my $str = "abcsfsaf#sdagasdga#sdgaghoiiopjh#dsfjkopa hkl;fjh#dsjfklpafj";########### 方法一my $pos = -1;my $num = 0;while (($pos = index($str, "#", $pos)) >-1) {print "found at $pos";$pos++;$num ++;}print "找到$num个!

";################################################################ 方法二my $count = 0;while( $str =~ /#/g ){$count ++;}print $count,"";########################################### 方法3 my $cc = 0;my $tmp = 0;if( $tmp = () = ($str =~ /#/g ) ){$cc += $tmp;}print "$cc";用Perl语言:写一个程序读入一串单词一个单词一行输出每一#/usr/bin/perl open (IN, 'D:\words.txt ') || die $!;@words=();close IN;open (OUT,'>','D:\wordlist.txt')or die $!;foreach $line(@words){$line=~s///g;@words=split /s+/,$line;foreach $word(@words){$word=~s/W+//;$freq {$word}++;print OUT $word ."=>". $freq{$word}."";}}close OUT;你试一下这个程序,文件可以不用每行一个单词,直接读取原文本就好!有问题再交流!

教一个perl程序题:从文件中读取内容内容就一排是一些文字#!/usr/bin/perl -w use strict;die "perl $0 " unless(@ARGV==1);open (IN,$ARGV[0]) or die "Can't open file $ARGV[0]!";open (OUT,">data2") or die "Can't create file data2";while(){chomp;my @tmp=split / /,$_;for(my $tmpc=1;$tmpcif($tmp[$tmpc-1] eq $tmp[$tmpc]){print OUT "$tmp[$tmpc-1]@2 @@@";$tmpc++;next;}print OUT " $tmp[$tmpc-1]";}print OUT "";}

相关文章