1

私はこの質問が以前に尋ねられたことを知っています。以前の回答をすべて確認しましたが、それでも問題を解決できませんでした。明らかに重複した質問をご容赦ください。

中国語のテキスト ファイルを処理する perl プログラムを作成しています。中国語のテキストを認識したいが、英語や他の言語や URL などの他のすべての行を除外したい。use utf8" " と " "を使用します$line =~ /(\p{Han}+)/が、何もしません。use utf8" " と " "を使用$line =~ /信息/しても、何も起こりません。" " を使用しない場合、" " は機能しますがuse utf8、" $line =~ /信息/" は機能しません$line =~ /(\p{Han}+)/。file -bi input.txt でテキスト ファイルのエンコーディングをチェックすると、「text/plain; charset=utf-8"」と表示されます。コードは次のとおりです。

$|=1;
use strict;
use utf8;

my $in = $ARGV[0];

sub main {

    open(IN, "$in") or die "can't open $in\n";

    while (my $line=<IN>) {
        chomp($line);

        if ($line =~ /(\p{Han}+)/ ) { 
        print "chinese: $line\n";
        }

        if ($line =~ /信息/) {
           print "$line\n";
        }

    } # end while

   close(IN); 
}

事前に助けとアドバイスをありがとう!

4

2 に答える 2

7

ファイルを UTF-8 として開く必要があります。

open IN, "<:encoding(UTF-8)", $in or die "can't open $in\n";

それ以外の場合は、バイト文字列として読み取られますが、これは必要なものではありません。

于 2013-06-23T05:53:12.120 に答える
-2

正規表現エンジンが文字列を Unicode 文字列として扱うようにする場合は、u 修飾子を使用する必要があります。

/(\p{Han}+)/u
于 2013-06-23T05:49:27.483 に答える