【问题标题】:Javascript, write to txt file save as UNICODEJavascript,写入txt文件另存为UNICODE
【发布时间】:2012-01-10 11:54:48
【问题描述】:

我有 2 个字符串。希望一切都先制作一个 .txt 文件,然后将字符串保存为 unicode。

function WriteFile(file, str, str2)
{
    var tmp=real_url.replace(/%20/g, " ");

    var WshNetwork=new ActiveXObject("WScript.Network");
    var userid=WshNetwork.UserName;

    var fso = new ActiveXObject("Scripting.FileSystemObject");

    if(! fso.FolderExists(tmp+"users/"+userid))
    {
        var cf = fso.CreateFolder(tmp+"users/"+userid);
    }
    else
    {
        //alert("THIS FOLDER ALREADY EXISTS");
    }

    delete fso;

    var fso = new ActiveXObject("Scripting.FileSystemObject");

    var fh = fso.OpenTextFile(tmp+"users/"+userid+"/"+file, 2, true);
    fh.WriteLine(str);
    fh.WriteLine(str2);

    fh.Close();
    delete fso;

    return;
}

【问题讨论】:

  • 您无法从外部站点读取/写入客户端 JavaScript 中的文件。这违反了安全政策。
  • 它不是基于浏览器的 Javascript,它是 Windows Scripting Host 代码,可以使用 API 访问本地文件系统。
  • 顺便说一句,这不是真正的重复,但这个问题的答案可能会解决你的问题:stackoverflow.com/questions/2840252/writing-utf8-text-to-file
  • 找到了解决方案!它在 writeLine 的属性中。你必须声明-1。
  • Karl,您应该重新发布您的解决方案并将其标记为已回答。您是对的,WriteLine 方法接受一个可选的第三个参数,该参数采用三态值的形式,指示文件应以 Unicode、Ansi 还是系统默认值打开。此外,无需在代码中重新创建 FileSystemObject。您可以重用您的变量。否则,您只是在脚本中增加了不必要的开销。

标签: file unicode activex wsh


【解决方案1】:

CreateTextFileOpenTextFile 方法都有一个指定编码(ASCII 或 Unicode (UTF16LE))的参数

var fso = new ActiveXObject("Scripting.FileSystemObject");
var filename = "c:\\testfile.txt";
var f = fso.OpenTextFile(filename, 2, true, -1); // -1 means unicode
f.WriteLine("Hello world!");
f.Close();

【讨论】:

    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多