web-dev-qa-db-ja.com

JavaScriptのFileReaderを使用したファイルエンコーディングの取得/設定

次の問題で苦労しています。 JavaScriptを使用して、ファイルコンテンツの文字セットを変更し、このコンテンツをユーザーに表示したいと考えています。

Input:fileフォームがあります。変更時にコンテンツを読んでいます

$('#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で達成できますか?

よろしく

24
thebravoman

HTMLページがUTF-8で、ファイルがISO-8859-1である場合。

これは機能しています:

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

Windows-1251ファイルがないのでテストできませんでしたが、「CP1251」はサポートされているようです(少なくともGoogle Chrome)の場合)。

 reader.readAsText(file, 'CP1251');

これが機能しない場合。次に、フォーマットを手動で変更する必要があります。残念ながら、私はそのトリックを実行するJavaScriptライブラリを知りません。

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

43
Florian Parain