如何将UTF-8字符串与Perl的printf正确对齐?
发布时间:2020-12-16 06:20:11 所属栏目:大数据 来源:网络整理
导读:什么是正确的方式来获得一个美丽的输出(所有行相同的缩进)? #!/usr/bin/env perluse warnings;use strict;use DBI;my $phone_book = [ [ qw( name number ) ],[ 'Kroner',123456789 ],[ 'Holler',[ 'Müh?ig',[ 'Singer',[ 'Maurer',];my $dbh = DBI-connec
什么是正确的方式来获得一个美丽的输出(所有行相同的缩进)?
#!/usr/bin/env perl use warnings; use strict; use DBI; my $phone_book = [ [ qw( name number ) ],[ 'Kroner',123456789 ],[ 'Holler',[ 'Müh?ig',[ 'Singer',[ 'Maurer',]; my $dbh = DBI->connect( "DBI:CSV:",{ RaiseError => 1 } ); $dbh->do( qq{ CREATE TEMP TABLE phone_book AS IMPORT( ? ) },{},$phone_book ); my $sth = $dbh->prepare( qq{ SELECT name,number FROM phone_book } ); $sth->execute; my $array_ref = $sth->fetchall_arrayref(); for my $row ( @$array_ref ) { printf "%9s %10sn",@$row; } # OUTPUT: # Kroner 123456789 # Holler 123456789 # Müh?ig 123456789 # Singer 123456789 # Maurer 123456789 解决方法
我无法重现它,但松散地说,似乎正在发生的是它是一个编码不匹配的字符.很可能您的Perl源文件已保存为UTF-8编码.但是你没有启用使用utf8;在脚本中.因此,它将每个非ASCII德语字符解释为两个字符并相应地设置填充.但是您运行的终端也处于UTF-8模式,因此字符打印正确.尝试添加使用警告;而且我敢打赌你会收到警告,如果加上使用utf8,我也不会感到惊讶;实际上解决了这个问题.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |