如何轉義CSV文件中的逗號

CSV全稱是:Comma Separated Values 或者 Character Separated Values

儘管第一種說法更常見,但我覺得還是第二種說法更確切一些,因爲你可以使用其它字符做分隔符。

使用逗號做分隔符的CSV文件有一個好處:你可以直接用Excel打開。如果使用其它分隔符,比如“|”,你必須告訴Excel該文件使用“|”作分隔符,Excel才能把它導入進來。 

前幾天,project manager告訴我:我們有許多CSV文件,都是使用“|”做分隔符,用Excel打開的時候比較麻煩,用戶想在Excel中直接打開。這樣就需要使用,做分隔符。但是文件中有些字段含有逗號,必須對這些逗號特殊處理,才能保證CSV文件在Excel中正確打開。他還給了我一個算法:

如果字段中有逗號(,),該字段使用雙引號(")括起來;

如果該字段中有雙引號,該雙引號前要再加一個雙引號,然後把該字段使用雙引號括起來。

看完project manager的要求,我真是滿頭起包啊。在IT業混了十幾年了,竟然不知道這樣處理逗號。

舉幾個例子:

 

字段處理前

字段處理後

abc,d2

"abc,d2"

ab"c,d2

"ab""c,d2"

"abc

"""abc"

""

""""""

 

如果字段中有兩個挨着的雙引號,比如:aaa""ccc。這種情況不用特殊處理。這是我在寫這篇博客的時候纔想起來的,趕忙使用Excel測試了一下。還好,不用特殊處理就能正常打開,不然我還得改程序。當然了,如果你把它處理成:"aaa""""ccc" Excel也能正常打開。事後總結總結真是有好處啊。

另外,如果某字段第一個字符是空格,第二個字符是雙引號,這種情況不用特殊處理。Project Manager在給我描述算法的時候,也舉了一個字段只有一個雙引號的例子,但他不小心在雙引號前面加了個空格,把問題掩蓋過去了。

我是在WinXPMS Excel2007下測試的。如果運行在其他環境和應用程序下,還需進行測試,規則可能不一樣。


轉自:http://www.cnblogs.com/xiaomiganfan/p/4073454.html


注:CSV文件編碼爲UTF8 不帶bom。不是隻要以逗號分隔就要以了,編碼也有要求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章