我在
Windows 7上运行Active Perl 5.14.
我正在尝试编写一个程序,它将读入转换表,然后处理文件并用其他模式替换某些模式 – 以上所有的Unicode(UTF-8).这是该计划的开始:
我正在尝试编写一个程序,它将读入转换表,然后处理文件并用其他模式替换某些模式 – 以上所有的Unicode(UTF-8).这是该计划的开始:
#!/usr/local/bin/perl # Load a conversion table from CONVTABLE to %ConvTable. # Then find matches in a file and convert them. use strict; use warnings; use Encode; use 5.014; use utf8; use autodie; use warnings qw< FATAL utf8 >; use open qw< :std :utf8 >; use charnames qw< :full >; use feature qw< unicode_strings >; my ($i,$j,$InputFile,$OutputFile,$word,$from,$to,$linetoprint); my (@line,@lineout); my %ConvTable; # Conversion hash print 'Conversion table: opening file: E:\My Documents\Perl\Conversion table.txt'."\n"; my $sta= open (CONVTABLE,"<:encoding(utf8)",'E:\My Documents\Perl\Conversion table.txt'); binmode STDOUT,':utf8'; # output should be in UTF-8 # Load conversion hash while (<CONVTABLE>) { chomp; print "$_\n"; # etc ... # etc ...
事实证明,在这一点上,它说:
wide character in print at (eval 155)E:/Active Perl/lib/Perl5DB.pl:640]line 2,<CONVTABLE> line 1,etc...
这是为什么?我想我已经完成并实施了所有必要的处方,以正确处理Unicode字符串,解码和编码成UTF-8?
以及如何解决它?
TIA
海伦
解决方法
Perl调试器有自己的输出句柄,与STDOUT不同(尽管它可能最终与STDOUT位于同一位置).您还希望在脚本开头附近执行类似的操作:
binmode $DB::OUT,':utf8' if $DB::OUT;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。