2015-06-18 48 views
-1

我需要導出包含「度」符號(「\ u00B0」)的字符串數據。這些數據以UTF-8編碼格式導出爲csv文本文件。如預期的那樣,度數符號被編碼爲java(unicode)字符串內的兩個字符(0xC2,0xB0)。將CSV文件導入到Excel中時,它將顯示爲大寫字母A,並帶有旋律重音符號,後跟度數符號。我知道「UTF-8」僅支持7位ASCII(作爲單個字節),而不是8位「擴展ASCII」,「US-ASCII」僅支持7位ASCII時間段。使用擴展字符導出(Android/Java)字符串數據以便導入到Excel中

是否有某種方法來指定編碼,使得0xC2前綴字節被抑制?

我傾向於允許正常的處理髮生,然後讀取&覆蓋文件內容,剝離額外的字節。

我真的喜歡更雄辯的解決方案......

+1

Excel中的編碼轉換成微軟標準CP1252,默認情況下。除非有不同的指示。你應該在使用SO之前使用Google ** ... http://stackoverflow.com/questions/6002256/is-it-possible-to-force-excel-recognize-utf-8-csv-files-automatically –

回答

0

Excel假定CSV文件是一個8位代碼頁。

要讓Excel將csv解析爲UTF-8,您需要在文件的開頭添加一個UTF-8字節順序標記。

編輯:

如果您在西歐或美國的時候,Excel將可能是遇到文件時沒有Unicode字節順序標記使用Windows-1252字符編碼和解碼設置。

由於0xC20xB0都是合法的Windows-1252字符,Excel將解碼以下幾點:

0xC2 = A
0xB0

+0

謝謝,我不知道字節順序標記。將它添加到文件的開始修復了Excel的奇怪的解釋問題。它很奇怪--Excel將0xC2前綴解釋爲擴展字符,但將0xB0正確解釋爲度符號(即沒有UTF-8所需的前綴)。此外,在8位「擴展ASCII」中,0xF8是度符號,所以Excel不會解釋爲擴展ASCII。這幾乎就像微軟正在使用標準一樣快速鬆動...... – gOnZo

+0

第二個相關問題 - 使用UTF-8 BOM前綴,我現在可以導入到Excel中,而不會在解釋中出現任何問題。但是,如果我將文件重新保存爲「CSV」,Excel將不會恢復UTF-8 BOM前綴。它有助於將數據存儲爲UNIICODE「.TXT」文件(這意味着每個字符有兩個字節,每個字符前綴爲0字節)。 – gOnZo

+0

嗨,我已經更新了我的答案,以解釋你所看到的。 AFAIK,沒有「擴展ASCII」這樣的東西。所有流行的8位編碼將度數符號編碼爲0xB0 - 請參閱http://www.fileformat.info/info/unicode/char/b0/charset_support.htm。 –

相關問題