2013-10-28 52 views
1

這是問題所在。我有一個Java程序,將XML轉換爲CSV。下面顯示了我的xml中的一個元素標記。CSV轉換無法識別特殊字符

<person-name>Greg kaménez</person-name>. 

我的解析器能夠正確解析它。但在轉換完成後,當我將其寫入csv文件並在mcsft excel中打開該文件時,我將"Greg kaménez"視爲單元格值,而不是Gregkaménez。

我也注意到,當我在Eclipse IDE中的文本編輯器中打開相同的csv文件時,它正確顯示了名稱「Greg kaménez」。

這裏是通過我寫一個字符串到CSV片斷:

String csv = ""x","y","Greg kaménez","z""; 
    String fileName = "output.csv"; 
    File csvFile = new File(fileName); 
    String jobId = null; 
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "UTF-8")); 
    writer.append(csv); 
    writer.close(); 
+0

向我們展示的代碼 – tom

+0

我懷疑這是同一個問題的重音'e'在兩個字符,其中一個修改第二被編碼。因爲這是特定順序的,所以當某些應用程序不按順序處理這些字符時,它將創建亂碼而不是正確帶重音的字符。 (我們需要查看代碼來確切解決問題。) – BlackVegetable

+0

將這兩個文件的編碼設置爲utf – itsraja

回答

1

CSV文件都沒有辦法指定字符編碼,你已經習慣了他們寫的,所以喜歡的文本編輯器和Excel程序讀取時必須嘗試猜測編碼,或使用系統默認值。

如果文本編輯器能夠正確顯示字符,可能您做的都對,但Excel沒有正確猜測字符編碼。

當您在Excel中導入文件時,它會要求您指定原始編碼。選擇正確的值,你應該能夠正確讀取文件。

+0

感謝您的回覆。不幸的是,我想以編程方式實現而不是手動。 – Ashish

2

Excel默認使用Windows-1252。所以,如果你想讀您的CSV在Excel中,使用

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "Windows-1252"));