PERL 在写中文到 .csv 文件里面的时候出现了乱码,可是写到.txt文件就没有问题。

我有PERL 写几个中文到.txt 文件没有一点问题。可是如果把文件格式改成.csv 其他都不变,那些中文就变成乱码了。
代码很简单如下:
$outputFile1 = $ARGV[0];
open (OUT1, ">$outputFile1") || die "cannot open output file1\n";
$str = "第一,第二";
print OUT1 ("$str\n");
close;
很奇怪,不知道是不是和我用英文版的EXCEL有关。 谢谢哪位可以帮忙
谢谢,可是还是乱码。

因为你是直接写入ANSI格式的文本文件,故不存在编码的问题。

请你用记事本打开$outputFile1这个文件(.csv格式的),你会发现里面的内容可正常显示,且格式是ANSI的,所以乱码是你的英文版Excel所致。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-05
这个肯定是编码问题,不知道Excel是不是默认utf8的。
两种解决办法:
1.把你的程序改成utf8编码的
2.将 $str 转成utf8,use Encode; $str = decode 'gb2312', $str;。这样$str就是utf8编码的,应该就没问题了
第2个回答  2010-09-06
我对Spreadsheet-WriteExcel也是看了很久才明白的。对excel的操作就必须用到这个模块。
中文乱码一般都是要use Encode这个模块
$name2="确定";
$name2=decode("cp936",$name2);
我用的cp936这个编码,也不一定是要这个编码,还有很多其他的编码。
相似回答