CSV文件的转义处理
原文:http://blog.csdn.net/maqingli20/article/details/7095132
------------------------------------------------------------------------------------
?CSV文件是一種適合程序格式化輸出數(shù)據(jù)的文件格式。它使用英文逗號作為列分隔符,文件可以直接用Excel打開。CSV的規(guī)則簡單,便于程序輸出;Excel對CSV的兼容性使得我們可以非常輕松的使用Excel提供的所有強大功能。
??????????????? 唯一需要注意的地方就是CSV是使用英文逗號作為列分隔符的,所以當你輸出的文本中含有英文逗號時就會被CSV認為是列分隔符,從而使得文件的現(xiàn)實格式與預想中的不同。因此,我們需要對內(nèi)容進行轉義。
??????????????? 網(wǎng)上可以得到的關于CSV的轉義大致可以總結為:
1.??????如果一個單元內(nèi)含有逗號,那么用半角雙引號將內(nèi)容包含,其中的逗號將不被識別為列分隔符;
2.??????如果原內(nèi)容中出現(xiàn)了半角雙引號,便是用兩個半角雙引號轉義。???????????
但是在實際操作中,就會發(fā)現(xiàn)如果某個單元內(nèi)出現(xiàn)多個逗號,雙引號,我們的規(guī)則便不對了。例如:
test,ma, "ma, ""go"", ""go"",""go"""
我們希望的輸出格式是三列,但是Excel會顯示為六列。我們的轉義字符失效了。
? ? ? ? ?| ? test ? | ? ?ma ? | ? ?"ma ? | ? ?""go"" ? | ? ?""go"" ? | ? ?""go""" ? |
?
之所以如此,通過我的分析,我認為CSV將每個逗號之間的內(nèi)容作為首要參考標準。如果用逗號作分隔是可行的,那么Excel將不會做任何更多的處理。
看一個更簡單的例子:
test,ma, "woshima, sldkl",
我們希望將其顯示為三列,但是結果卻是四列:
?
? ? ? ?| ? test ? | ? ?ma ? | ? ?"woshima ? | ? ?sldkl" ? |
?
由此可見,網(wǎng)上流傳的轉移規(guī)則并不完全。其根本原因在于,CSV只是一個技術規(guī)范,不同的程序對其有不同的支持;而且CSV本身的規(guī)范也是相當繁瑣。如果希望用程序去實現(xiàn)這樣的規(guī)范,那么CSV的簡單性的優(yōu)勢將不復存在。
好了,說到這里,我們應該怎么做呢? 我個人認為,最好的辦法就是規(guī)定一個特殊的字符串作為英文逗號的轉義字符。
這樣就一了百了。
總結
以上是生活随笔為你收集整理的CSV文件的转义处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle最大实例数,【ORA-161
- 下一篇: 当使用easyui时,jquery的设置