2012-09-18 83 views
0

我試圖從數據庫中檢索到的數據創建一個csv文件。數據本身包含逗號,管道和任意數量的分隔符。我們選擇使用非ascii斷開的管道符號作爲分隔符,這也必須存在於xml配置文件和java測試文件中。unix中忽略的ascii csv分隔符

當我們的java文件被部署到unix時,它會抱怨找到了無效字符,我猜是因爲它在ascii文件中找到了非ascii字符。

因此,我們將文件轉換爲UTF-8,在Windows中將此字符顯示爲 字符。所以我們從UTF-8網站複製了破損的管道符號。現在在windows和unix編譯好。然而,在Windows中測試運行良好,但沒有在Unix中,因爲它解釋|作爲Â

任何人都可以建議我應該如何處理這些文件,他們應該在什麼格式?

我現在唯一能想到的其他解決方案是使用ascii字符作爲分隔符的組合,我並不想這麼做。

在此先感謝

回答

1

general approach是引用可能包含分隔符的字段。嵌入式引號然後通過使用兩個引號來表示它們。這可能需要比您目前所做的更多的預處理/後處理,但會使代碼更健壯(如果數據庫字段開始使用嵌入的管道字符,會發生什麼情況?)。

opencsv項目可以處理這個用例。

+0

我把它分成2條評論。感謝您的迴應。我們遇到的麻煩是我們使用內部csv解析器,所以目前不能使用opencsv,所以我們不能擴展它來處理帶引號的字段。我注意到你對未來在實際數據中使用分隔符的觀點,這是一個風險。然而,目前我只需要一些幫助,使用破損的管道字符作爲分隔符在Windows和Unix中都可以使用。 –

+0

一個想法是,unix機器上使用的默認編碼是ascii,所以如果我們使用保存爲cp1252的文件,那麼該字符不會被解釋。但是,當我們將它們保存爲utf-8時,它們也沒有被正確解釋。我需要幫助的是克服這個最初的問題,然後可以稍後解決更大的設計問題(着名的遺言:)。 –

相關問題