2012-09-16 9 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'); 

を私はので、私はそれをテストすることができませんでしたが、それは「CP1251」が、少なくともGoogle Chromeので(サポートされていることのように見える任意のWindows-1251のファイルを持っていません)、その:

reader.readAsText(file, 'CP1251'); 

これのどれも働いていない場合。次に、書式を手動で変更する必要があります。残念ながら、私はそのトリックを行うJavaScriptライブラリを認識していません。

UnicodeマッピングhereおよびDelan Azabanianswerから、CP1251の文字列をUTF-8の文字列に変換する関数を作成する必要があります。

+0

最後の文章については、ISO-8859-1文字列をUTF-8に変換する「標準」機能はありませんか? –

+0

私はこれをShift-JISファイルで次のように試しました:reader.readAsText(f、 "Shift-JIS"); これはUTF-8に変換されています。しかし、今問題は、着信ファイルがShift-JISでエンコードされていることを検出する方法です。なぜなら、UTF-8エンコードされたファイルをその関数に送信しようとすると、正しく変換されないように見えるからです。 – starmandeluxe

関連する問題