2012-09-16 25 views
10

我正在努力解決以下問題。使用javascript我想更改文件內容的字符集並將此內容顯示給用戶。使用javascript的FileReader獲取/設置文件編碼

我有一個輸入:文件格式。我正在閱讀內容

$('#form input:file').change(function(event){     
    file = this.files[0]; 
    reader = new FileReader(); 
    reader.onload = function(event) { 
     result = event.target.result.replace(/\n/g,'<br />'); 
     $('#filecontents').html(result); 
    }); 
    reader.readAsText(file); 
}) 

該文件位於Windows-1251中。我想將文件的內容轉換爲另一種編碼,然後將其呈現給用戶。

這是可以實現與JavaScript?

問候

回答

21

如果你的HTML頁面是UTF-8,你的文件是ISO-8859-1。

這是工作:

reader.readAsText(file, 'ISO-8859-1'); 

我沒有任何的Windows-1251文件,所以我無法測試它,但它看起來就像是,「CP1251」支持(通過谷歌瀏覽器至少),所以:

reader.readAsText(file, 'CP1251'); 

如果沒有這工作。然後你應該手動改變格式。不幸的是,我不知道有任何JavaScript技巧。

從unicode映射hereDelan Azabanianswer,你應該設法建立一個函數,將字符串char char char CP1251中的字符串轉換爲UTF-8。

+0

關於你的最後一句話,是不是有一個「標準」函數來將ISO-8859-1字符串轉換爲UTF-8? –

+0

我試着用Shift-JIS文件如下:reader.readAsText(f,「Shift-JIS」); 轉換爲UTF-8就好了。但現在的問題是如何檢測傳入文件在Shift-JIS中編碼......因爲如果我嘗試將UTF-8編碼文件發送到該函數中,它似乎不能正確轉換。 – starmandeluxe

相關問題