2012-03-28 23 views
1

Ich verwende den folgenden Javascript-Code, um eine Textarea in eine Textdatei auf dem Computer des Benutzers zu speichern. Dies ist auf unser Intranet beschränkt und nur IE ist erlaubt, so dass die Beschränkung auf IE mit eingeschränkter Sicherheit kein großes Problem darstellt. Allerdings kann ich PHP nicht verwenden. Daher möchte ich bei Javascript bleiben und das folgende Skript anpassen, um den Zeichensatz auf UTF-8 zu erzwingen. Was ich beim Speichern der Datei bemerkt habe, ist, dass es im Editor und Notepad ++ korrekt gelesen wurde, aber beim Öffnen in Wordpad zum Beispiel war es offensichtlich, dass das UTF-16 nicht zufriedenstellend war. Ebenso, wenn ich es dem Speichern-Dialog überlasse und die Codierung manuell in UTF-8 ändere, speichert es den gesamten Text auf der Seite und nicht nur den Textbereich. Wenn jemand weiß, wie man den Standard "save as type" in text.txt ändert, wäre das großartig, aber nicht wichtig.Javascript zum Speichern von Textarea in Datei als 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

Es wäre schön, zu nennen, die IE-Version, die Sie zielen. – Sheepy

+0

Über den Zeichensatz, ich weiß nicht, aber nach [was scheint die Referenz] (http://msdn.microsoft.com/en-us/library/ie/ms537418%28v=vs.85%29 .aspx), der Standardname der Datei ist das dritte Argument von 'execCommand()'. Ist es nicht schon was "element3" Ziele? –

+0

@Sheepy IE 7 und 8. – Nooblet

Antwort

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

Das Endergebnis:

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.");   
      } 
     } 
    } 
Verwandte Themen