从顶部开始:使用以下代码,我可以通过ActiveX对象在Internet Explorer的htm文件中使用jscript创建一个文本文件。耶!然而,在记事本中打开文本文件时,我注意到新行显示为mojibake字符(矩形字符),而不是换行符。《升华2》很好。
<html>
<head>
</head>
<script type="text/javascript">
var myStr = "The self same moment I could pray;nAnd from my neck so freenThe Albatross fell off, and sanknLike 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对象的危险。
看起来字符编码有问题。试试这个而不是CreateTextFile()
:
var outFile = fso.OpenTextFile(apath + afilename, 2, true, 0);
第二个参数:1
=读取,2
=写入,8
=追加。
第三个参数:true
(如果创建了不存在的文件),false
(如果未创建不存在文件)。[可选,默认=false
]
第四个参数:0
=ASCII,-1
=Unicode,-2
=系统默认值。[可选,默认值=0
]