2014-02-07 122 views
0

我出口在斯卡拉/噴霧一個CSV和它的作品很好我的Windows計算機上,但未能的Linux機器上。導出CSV用變音符號引起奇怪的字符出現在輸出

從兩個操作系統的響應是相同的:

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:X-Requested-With, Cache-Control, Pragma, Origin, Authorization, Content-Type, Auth-Token 
Access-Control-Allow-Methods:GET, POST, DELETE, OPTIONS, PUT 
Access-Control-Allow-Origin:* 
Access-Control-Expose-Headers:Auth-Token 
Content-Disposition:attachment; filename=Enter report title.csv 
Content-Length:229 
Content-Type:text/csv; charset=ISO-8859-1 
Date:Fri, 07 Feb 2014 22:17:40 GMT 
Server:spray-can/1.2.0 

我很奇怪,爲什麼OS可以有所作爲?

jar部屬後,變音符號都用奇怪的字符替換當從Linux導出。

例如,這個Café macchiato 在從Windows導出時很好,但從Linux導出時看起來像Café macchiato

+0

您如何看待在這兩個操作系統的文件嗎? –

+0

@AlekseyIzmailov我從本地環境中導出並在Win 7中查看 - Excel和從Linux env上託管的網站導出時相同。 –

回答

0

請永遠使用Excel面向文本文件。它搞砸了東西。使用像vim或Notepad ++這樣的編輯器,您可以在其中檢查字節並實際查看您的內容是否正確。

0

爲了幫助Excel中識別編碼可以將BOM添加到文件的開頭字符。例如:

def prepareBomOutputStream(outputFile: String) = { 
    val os = new FileOutputStream(outputFile) 
    os.write(239) 
    os.write(187) 
    os.write(191) 
    os 
} 

您還可以檢查是否在兩種情況下獲得完全相同的編碼,而不是編碼的子集。例如在Windows上,您可能會得到ISO-8859-15。您可以在CSV導出代碼/庫中明確設置編碼。要檢查Linux上的編碼,您可以使用:

$ file -ib /tmp/test.csv 
text/plain; charset=utf-8 

甚至像hexdump之類的東西。