2012-06-29 49 views
2

我試圖使用Google App腳本導入帶有法語口音的CSV文件,使用getContentAsString()讀取文件,然後將其處理到Google Spreadsheet中。這似乎是unicode字符發回垃圾。DocsList文件getContentAsString()缺少Unicode字符

經過調查,它似乎getContentAsString()使用UTF-8打開文件。使用Western Mac OS Roman或Western Windows Latin 1創建文件時導致問題 - 在導出CSV時,較早的Excel上使用默認編碼。

有關如何規避此問題的任何建議?

舉例:quipement應該是設備公司

function Test() { 
    var filename = 'BV_period_2.csv'; 
    var files = DocsList.getFiles(); 
    var csvFile = ""; 

    for (var i = 0; i < files.length; i++) { 
    if (files[i].getName() == filename) { 
     csvFile = files[i].getContentAsString(); //csvFile will have �  
     break; 
    } 
    } 

    var csvData = CSVToArray(csvFile, ","); 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('TestBV'); 
    ... 
+1

你從哪裏得到這些不好的字符?在電子表格本身?記錄器中是否一樣?你的工作表的區域設置是什麼?法國人嗎?我們?你可以發佈你用來導入CSV文件的代碼嗎? –

+0

經過調查,它似乎getContentAsString()使用** UTF-8 **打開文件。當使用** Western Mac OS Roman **或** Western Windows Latin 1 **創建文件時,會導致問題 - 導出CSV時,較早的Excel上的默認編碼。 – VanacK

+0

DocList服務已被棄用。請參閱https://developers.google.com/apps-script/sunset –

回答

2

您也可以選擇的字符集。這是一個UTF-16示例。

DocsList.getFileById(<some id>).getBlob().getDataAsString("UTF-16") 
+1

科裏,感謝您的建議,它的工作原理。您的方法正確地將西文Mac OS Roman中編碼的CSV文件導入UTF-8。 **說明**:文檔不表示我們可以爲字符編碼類型添加參數。 [getDataAsString](https://developers.google.com/apps-script/class_blob#getDataAsString) – VanacK