0

从顶部开始:使用以下代码,我可以通过 ActiveX 对象在 Internet Explorer 的 htm 文件中使用 jscript 创建一个文本文件。耶!但是,在记事本中打开文本文件时,我注意到新行显示为 mojibake 字符(矩形字符)而不是 newlines 。在 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 对象的危险。

4

1 回答 1

1

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

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

第二个参数:1= 读取,2= 写入,8= 附加。

第三个参数:true如果创建不存在的文件,false如果不创建不存在的文件。[可选,默认 = false]

第四个参数:0= ASCII,-1= Unicode,-2= 系统默认值。[可选,默认 = 0]

于 2013-02-20T16:44:43.503 回答