Chinaunix
标题:
中文编码问题
[打印本页]
作者:
kejiake
时间:
2012-07-09 15:41
标题:
中文编码问题
本帖最后由 kejiake 于 2012-07-10 09:15 编辑
我有个文件,编码是:
ISO-8859 text
系统编码是:
LANG=zh_CN
文件内容:
F1(0)=222|F2(0)=赵珅珅|F3(1)=20120501|F4(1)=20120531|F5(12)=动感地带
代码:
open( FILEIN, "a.data" ) || die("a.data file not find!");
while (<FILEIN>) {
chomp;
%test=split /=|\|/;
while ( ( my $key, my $value ) = each %test ) {
print "$key=>$value\n";
}
}
如果这样分割的话,输出的结果是:
F4(1)=>20120531
F3(1)=>20120501
?>
F1(0)=>222
F5(12)=>动感地带
F2(0)=>赵?
有乱码出现。请教下各位这样的问题该怎么解决?
作者:
kejiake
时间:
2012-07-09 16:10
文件很简单:a.data:
F1=222|F2=赵珅珅|F3=20120501|F4=20120531|F5=动感地带
代码也简单:test.pl
open( FILEIN, "a.data" ) || die("a.data file not find!");
while (<FILEIN>) {
%test = split /\||=/;
while ( ( my $key, my $value ) = each %test ) {
print "$key=>$value\n";
}
}
可输出的结果却是:
F4=>20120531
F5=>动感地带
F3=>20120501
?>
F2=>赵?
F1=>222
作者:
cdtits
时间:
2012-07-09 16:30
%test = /(F\d+)=(.*?)(?=\|F|$)/g;
复制代码
作者:
kejiake
时间:
2012-07-09 16:53
回复
3#
cdtits
没见过这种给hash赋值的写法,能解释下么?
作者:
cdtits
时间:
2012-07-09 16:59
回复
4#
kejiake
跟 split 赋值一样的。那个可行不?
作者:
kejiake
时间:
2012-07-09 17:03
回复
5#
cdtits
对于这个例子是可行的,如果文件内容是这样的呢:括号和括号里的内容无视。
F1(0)=222|F2(0)=赵珅珅|F3(1)=20120501|F4(1)=20120531|F5(12)=动感地带
作者:
kejiake
时间:
2012-07-10 09:24
米人么。。。
作者:
cdtits
时间:
2012-07-10 09:29
%test = /(F.*?)=(.*?)(?=\|F|$)/g;
复制代码
作者:
kejiake
时间:
2012-07-10 09:42
OK了。谢谢。能解释下么?
%test = /(F.*?)=(.*?)(?=\|F|$)/g;
和
%test = split /\||=/;
差别在哪里?
作者:
zhlong8
时间:
2012-07-10 14:32
3楼的代码有点小惊喜啊
作者:
xmchenb
时间:
2012-07-11 16:13
搞不懂3楼的代码,求解析
作者:
xmchenb
时间:
2012-07-11 17:48
my $_= "F1(0)=222|F2(0)=赵珅珅|F3(1)=20120501|F4(1)=20120531|F5(12)=动感地带";
my %z = /(F.*?)=(.*?)(?=\|F|$)/g;
while(my ($k,$v)=each %z)
{
print $k,"=>",$v,"\n";
}
完整程序
作者:
blackold
时间:
2012-07-12 20:06
编码问题还是用 Encode 吧。
作者:
pigkingone
时间:
2012-08-04 08:21
处理中文先转内部编码
作者:
sjdy521
时间:
2012-08-04 09:04
这个问题的本质应该不在于split或者其他正则写法
因为包含了中文字符,应该先统一decode成unicode字符再做相同的处理就没问题了
作者:
zhaoshuaijiang
时间:
2012-08-06 12:37
建议可以参考这个:
http://www.php-oa.com/2008/12/13/perl-unicode.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2