gpt4 book ai didi

perl - 使用常量字符串与从文件读取数据时的不同行为

转载 作者:行者123 更新时间:2023-12-01 06:06:12 26 4
gpt4 key购买 nike

我在读取 UTF-8 文件和检测一些非 ASCII 字符(如“á”或“ö”)时遇到问题。如果我简单地用 UTF-8 字符声明一个常量字符串,一切正常,错误只发生在文件内容上。

我的输入文件看起来像:

áéíóúöüőűÁÉÍÓÚÖÜŐŰäÄß

我的 perl 程序看起来:

use utf8;    
binmode STDOUT, ":utf8";
my $szo = "áéíóúöüőűÁÉÍÓÚÖÜŐŰäÄß";
list($szo);

while(<STDIN>){
chomp;
list($_);
}

sub list($){
my ($szo) = @_;

my @arr = split(//, $szo);
foreach(@arr){
my $ord = ord($_);
if($_ eq 'á'){print "á\n";}
print "isoe elem:$_ ord:$ord \n";
}
}

执行结果如下:

á  
isoe elem:á ord:225
isoe elem:é ord:233
isoe elem:í ord:237
isoe elem:ó ord:243
....
isoe elem:ß ord:223
From here file data, no good:
isoe elem:Ã ord:195
isoe elem:¡ ord:161
isoe elem:Ã ord:195
isoe elem:© ord:169
...
isoe elem:Ã ord:195
isoe elem: ord:159

最佳答案

您还需要为 STDIN 指定 UTF-8 编码,就像您为 STDOUT 所做的那样。

关于perl - 使用常量字符串与从文件读取数据时的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8911402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com