好的,从顶部: 使用以下代码,我可以通过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对象的危险。
答案 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
]