私は、utf8 txt ファイルを受け取り、そのコンテンツを処理する Perl/CGI のアプリケーションを持っています。
何らかの理由で (Perl はファイルを 4096 バイトのバッファーに分割し、最初のバッファーのみにバイト オーダー マークがあると思います)、Perl はファイルの内容を 4096 バイト以降で Unicode として解釈します。
ファイルの途中 (4k の各ブロックに少なくとも 1 つ) にいくつかの en ダッシュ ("–") を広げると、おそらく Unicode には en ダッシュがないため、プログラムはそれを utf8 として認識します。
HTML ページから txt を受け取り、次のようにスカラー変数に送信しています。
while(my $l = <$fh>){
$text .= $l;
}
ファイルの各行を en ダッシュで連結して、utf8 を強制しようとしました。
while(my $l = <$fh>){
$text .= "–".$l;
}
しかし、私はこのエラーが発生します:
Wide character in print at (eval 12) line 94.
誰にもヒントがありますか?ありがとうございます!