作者josefy (醉落~最弱)
看板Perl
标题[请益] Perl 读取csv档案
时间Sun Sep 28 10:44:19 2014
各位版大/高手您好
小弟最近在尝试使用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;
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.242.247
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Perl/M.1411872261.A.C3F.html
1F:→ xatier: 空格的长度有会一起算进去阿 09/28 10:45
2F:→ josefy: 您好, 但是在csv里面储存格中没有那些空格说Or2 09/28 10:46
※ 编辑: josefy (220.135.242.247), 09/28/2014 10:47:53
3F:→ josefy: 个人是有怀疑过编码问题, big5似乎一个四元要两个byte 09/28 11:14
4F:→ josefy: 个人试过把data copy至笔记本後 在读出就没有问题 09/28 11:14
5F:→ josefy: 但是为了工作效率, 希望可以不要手动复制到笔记本上 09/28 11:15
6F:→ xatier: 如果是编码问题的话,可以找一下 encoding 这个模组 09/28 11:31
7F:→ flu: 把你的第四行以UTF-16编码存成纯文字档,再用us-ascii编码 09/28 11:33
8F:→ flu: 打开会见到类似的现象 09/28 11:33
9F:→ flu: 另外,a-zA-Z在big5编码内仍然是一个符号占1byte (8 octets) 09/28 11:36
10F:→ josefy: 请问F大, 这是big5造成的问题吗? 要怎麽解决呢? 09/28 12:29
11F:推 CindyLinz: use Encode; $line=Encode::decode('big5', $line); 09/28 13:38
12F:→ CindyLinz: 不过你 @data[$x] 应该是要写成 $data[$x] 吧? 09/28 13:38
13F:→ CindyLinz: 然後..为什麽读进$data[$x]以後,$x加1,印$data[$x+1] ? 09/28 13:39
14F:→ josefy: 感谢Cindy大, 小弟试试看! 09/28 23:07