看板 Perl 關於我們 聯絡資訊
各位版大/高手您好 小弟最近在嘗試使用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://www.ptt.cc/bbs/Perl/M.1411872261.A.C3F.html
xatier: 空格的長度有會一起算進去阿 09/28 10:45
josefy: 您好, 但是在csv裡面儲存格中沒有那些空格說Or2 09/28 10:46
※ 編輯: josefy (220.135.242.247), 09/28/2014 10:47:53
josefy: 個人是有懷疑過編碼問題, big5似乎一個四元要兩個byte 09/28 11:14
josefy: 個人試過把data copy至筆記本後 在讀出就沒有問題 09/28 11:14
josefy: 但是為了工作效率, 希望可以不要手動複製到筆記本上 09/28 11:15
xatier: 如果是編碼問題的話,可以找一下 encoding 這個模組 09/28 11:31
flu: 把你的第四行以UTF-16編碼存成純文字檔,再用us-ascii編碼 09/28 11:33
flu: 打開會見到類似的現象 09/28 11:33
flu: 另外,a-zA-Z在big5編碼內仍然是一個符號佔1byte (8 octets) 09/28 11:36
josefy: 請問F大, 這是big5造成的問題嗎? 要怎麼解決呢? 09/28 12:29
CindyLinz: use Encode; $line=Encode::decode('big5', $line); 09/28 13:38
CindyLinz: 不過你 @data[$x] 應該是要寫成 $data[$x] 吧? 09/28 13:38
CindyLinz: 然後..為什麼讀進$data[$x]以後,$x加1,印$data[$x+1] ? 09/28 13:39
josefy: 感謝Cindy大, 小弟試試看! 09/28 23:07