[請益] 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