utf8_encode tag script leer convertir contenido charset archivo javascript internet-explorer unicode activex internationalization

javascript - tag - utf-8 html



Escribir el texto UTF8 en un archivo (4)

Agregue un tercer parámetro, true , en su llamada al método CreateTextFile . Vea esta página .

Estoy usando la siguiente función para guardar texto en un archivo (en IE-8 con ActiveX).

function saveFile(strFullPath, strContent) { var fso = new ActiveXObject( "Scripting.FileSystemObject" ); var flOutput = fso.CreateTextFile( strFullPath, true ); //true for overwrite flOutput.Write( strContent ); flOutput.Close(); }

El código funciona bien si el texto es completamente latino-9, pero cuando el texto contiene incluso un solo carácter codificado en UTF-8, la escritura falla.

El ActiveX FileSystemObject no es compatible con UTF-8, parece. Intenté UTF-16 codificando primero el texto, pero el resultado fue confuso. ¿Qué es una solución?


El método CreateTextFile tiene un tercer parámetro que decide si el archivo debe escribirse unicode o no. Puedes hacer como:

var flOutput = fso.CreateTextFile(strFullPath,true, true);

Curiosamente, hace mucho tiempo que había creado este pequeño script para guardar archivos en formato Unicode:

Set FSO=CreateObject("Scripting.FileSystemObject") Value = InputBox ("Enter the path of the file you want to save in Unicode format.") If Len(Trim(Value)) > 0 Then If FSO.FileExists(Value) Then Set iFile = FSO.OpenTextFile (Value) Data = iFile.ReadAll iFile.Close Set oFile = FSO.CreateTextFile (FSO.GetParentFolderName(Value) & "/Unicode" & GetExtention(Value),True,True) oFile.Write Data oFile.Close If FSO.FileExists (FSO.GetParentFolderName(Value) & "/Unicode" & GetExtention(Value)) Then MsgBox "File successfully saved to:" & vbCrLf & vbCrLf & FSO.GetParentFolderName(Value) & "/Unicode" & GetExtention(Value),vbInformation Else MsgBox "Unknown error was encountered!",vbCritical End If Else MsgBox "Make sure that you have entered the correct file path.",vbExclamation End If End If Set iFile = Nothing Set oFile= Nothing Set FSO= Nothing Function GetExtention (Path) GetExtention = Right(Path,4) End Function

Nota: Este es el código de VBScript, debe guardar ese código en un archivo como unicode.vbs , y una vez que haga doble clic en ese archivo, se ejecutará.


Prueba esto:

function saveFile(strFullPath, strContent) { var fso = new ActiveXObject("Scripting.FileSystemObject"); var utf8Enc = new ActiveXObject("Utf8Lib.Utf8Enc"); var flOutput = fso.CreateTextFile(strFullPath, true); //true for overwrite flOutput.BinaryWrite(utf8Enc.UnicodeToUtf8(strContent)); flOutput.Close(); }


function saveFile(strFullPath, strContent) { var fso = new ActiveXObject( "Scripting.FileSystemObject" ); var flOutput = fso.CreateTextFile( strFullPath, true, true ); //true for overwrite // true for unicode flOutput.Write( strContent ); flOutput.Close(); }

object.CreateTextFile(filename[, overwrite[, unicode]])