2012-03-28 7 views
1

次のJavascriptコードを使用して、テキストエリアをユーザーのマシン上のテキストファイルに保存しています。これはイントラネットに限定されており、IEのみが許可されているため、セキュリティが限定されたIEに制限されることは大きな問題ではありません。しかし、私はPHPを使用することはできません。したがって、私はjavascriptに固執し、次のスクリプトを調整して、文字セットをUTF-8に強制します。ファイルを保存するときに気付いたのは、メモ帳やメモ帳++で正しく読み取れるということですが、たとえばワードパッドで開くと、UTF-16が満足のいくものではないことが明らかでした。同様に、保存ダイアログに任せて、エンコーディングをUTF-8に手動で変更すると、テキストエリアだけでなく、ページ内のすべてのテキストが保存されます。また、誰かがデフォルトの「タイプとして保存」をテキスト.txtに変更する方法を知っていれば、それはすばらしいが重要ではないでしょう。JavaScriptを使ってテキストエリアをUTF-8としてファイルに保存する

<script type="text/javascript"> 
function SaveContentsTXT(element) {  
    if (typeof element == "string")   
     element = document.getElementById(element); 
     element3 = document.getElementsByName('TXTFILE')[0]; 
    if (element) {   
     if (document.execCommand) {        
      var oWin = window.open("about:blank", "_blank"); 
      oWin.document.write((((element.value).replace(/ /g, '&nbsp;')).replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;')).replace(/\n\r?/g, '<br />')); 
      oWin.document.close();   
      var success = oWin.document.execCommand('SaveAs', true, element3.value); 
      oWin.close();    
      if (!success)     
       alert("Sorry, your browser does not support this feature or you canceled.");   
      }  
     } 
    } 
</script> 
+0

あなたがターゲットとしているIEのバージョンに言及しいいと思います。 – Sheepy

+0

文字セットについてはわかりませんが、[参考になると思われる](http://msdn.microsoft.com/en-us/library/ie/ms537418%28v=vs.85%29 .aspx)の場合、ファイルのデフォルト名は 'execCommand()'の3番目の引数です。それはすでに '要素3 'の目標ではないのですか? –

+0

@ Sheepy IE 7 and 8. – Nooblet

答えて

1
oWin.document.charset="UTF-8"; 

最終結果:

function SaveContentsTXT(element) {  
    if (typeof element == "string")   
     element = document.getElementById(element); 
     txtitle = document.getElementsByName('TXTFILE')[0]; 
    if (element) { 
     if (document.execCommand) {        
      var oWin = window.open("about:blank", "_blank"); 
      oWin.document.write((((element.value).replace(/ /g, '&nbsp;')).replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;')).replace(/\n\r?/g, '<br />')); 
      oWin.document.close(); 
      oWin.document.save="text"; 
      oWin.document.charset="UTF-8"; 
      var success = oWin.document.execCommand('SaveAs', true, txtitle.value); 
      oWin.close();    
      if (!success)     
       alert("Sorry, your browser does not support this feature or you canceled.");   
      } 
     } 
    } 
関連する問題