2012-03-28 53 views
1

我正在使用以下Javascript代碼將textarea保存到用戶計算機上的文本文件。這僅限於我們的內部網,並且只允許IE瀏覽器被限制爲IE,但安全性有限並不是一個大問題;但是,我無法使用PHP。因此,我想堅持javascript並調整以下腳本以強制字符集轉換爲UTF-8。我在保存文件時注意到,它可以在記事本和記事本++中正確讀取,但是當在寫字板中打開時,例如很明顯UTF-16並不令人滿意。同樣,如果我將其保存到保存對話框並手動將編碼更改爲UTF-8,則它將所有文本保存在頁面中,而不僅僅保存爲textarea。此外,如果有人知道如何將默認的「另存爲類型」更改爲文本.txt,那將很棒但不重要。JavaScript保存textarea文件爲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 2012-03-28 02:07:42

+0

關於charset,我不知道,但根據[什麼似乎是參考](http://msdn.microsoft.com/en-us/library/ie/ms537418%28v=vs.85%29 .aspx),該文件的默認名稱是'execCommand()'的第三個參數。這不就是'element3'的目標嗎? – 2012-03-28 05:18:28

+0

@Sheepy IE 7和8. – Nooblet 2012-03-28 12:54:59

回答

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.");   
      } 
     } 
    } 
相關問題