[请益] Perl 读取csv档案

楼主: josefy (醉落~最弱)   2014-09-28 10:44:19
各位版大/高手您好
小弟最近在尝试使用perl 读取csv档案 (由服务器抓下来的)
把CSV打开后看到的东西是EX.
ABC DEFG HIJK
但是用perl读出后自元间会多出间隔
ex.['A B C D E F G H I J K']
若是用length去算长度, string 变成原来的两倍长
请问是为什么呢?
小弟应用上希望读出的结果与在csv上看到的一致 这样才能运用 感谢!
程式码:
pen FILE1, "<data1.txt" or die " Cannot open data";
$x=0;
while ($line= readline(FILE1)){
@data[$x]=$line;
$x=$x+1;
print @data[$x];
#print length($line),"\n";
}
close FILE1;
作者: xatier (一切重来就好了...)   2014-09-28 10:45:00
空格的长度有会一起算进去阿
楼主: josefy (醉落~最弱)   2014-09-28 10:46:00
您好, 但是在csv里面储存格中没有那些空格说Or2个人是有怀疑过编码问题, big5似乎一个四元要两个byte个人试过把data copy至笔记本后 在读出就没有问题但是为了工作效率, 希望可以不要手动复制到笔记本上
作者: xatier (一切重来就好了...)   2014-09-28 11:31:00
如果是编码问题的话,可以找一下 encoding 这个模组
作者: flu (Crazy Rhythm)   2014-09-28 11:33:00
把你的第四行以UTF-16编码存成纯文字档,再用us-ascii编码打开会见到类似的现象另外,a-zA-Z在big5编码内仍然是一个符号占1byte (8 octets)
楼主: josefy (醉落~最弱)   2014-09-28 12:29:00
请问F大, 这是big5造成的问题吗? 要怎么解决呢?
作者: CindyLinz (Cindy Wang)   2014-09-28 13:38:00
use Encode; $line=Encode::decode('big5', $line);不过你 @data[$x] 应该是要写成 $data[$x] 吧?然后..为什么读进$data[$x]以后,$x加1,印$data[$x+1] ?
楼主: josefy (醉落~最弱)   2014-09-28 23:07:00
感谢Cindy大, 小弟试试看!

Links booklink

Contact Us: admin [ a t ] ucptt.com