通过activeXObject在jscript中创建的文本文件中的换行符

时间:2013-02-20 09:52:03

标签: activex newline jscript

好的,从顶部: 使用以下代码,我可以通过ActiveX对象在Internet Explorer的htm文件中使用jscript创建文本文件。好极了! 但是,在记事本中打开文本文件我注意到新行显示为mojibake字符(矩形字符)而不是换行符。这在Sublime 2中很好。

<html>
<head>
</head>
<script type="text/javascript">
var myStr = "The self same moment I could pray;\nAnd from my neck so free\nThe Albatross fell off, and sank\nLike lead into the sea.";
var myPath = "C:\\temp\\";
var myTextfile = "Rime.txt"

writeFile(myPath, myTextfile, myStr)
function writeFile(apath, afilename, str)
{ 
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var outFile = fso.CreateTextFile(apath + afilename, true);
  outFile.WriteLine(str);
  outFile.Close();
}

</script>
</body>
</html>

我还注意到在Photoshop环境(我通常从中编写脚本)

中使用以下内容时不会发生这种情况
var txtFile = new File(apath + "/" + afilename);
outFile.open('w');
outFile.writeln(str);
outFile.close();

这只是ActiveX的一个怪癖(或奖励)吗?我可以更改它以便写入可以在记事本中正确查看的新行吗?

而且,是的,我母亲确实警告过我参与ActiveX对象的危险。

1 个答案:

答案 0 :(得分:1)

看起来字符编码有问题。试试这个而不是CreateTextFile()

var outFile = fso.OpenTextFile(apath + afilename, 2, true, 0);

第2个arg:1 =正在阅读,2 =正在撰写,8 =正在追加。

3rd arg:true如果创建了不存在的文件,则false如果未创建不存在的文件。 [可选,默认= false]

4th arg:0 = ASCII,-1 = Unicode,-2 =系统默认值。 [可选,默认= 0]