通过Windows脚本宿主以UTF-8编码运行JScr​​ipt或VBScript文件的问题

时间:2014-03-20 19:10:37

标签: windows utf-8 vbscript jscript wsh

我不确定我是否做错了什么,但如果我将其保存在Windows Script Host中,我似乎无法通过.js运行以下JScript使用UTF-8编码的文件:

var name = "Hello world!";
WScript.echo(name);

当我运行它时,它给了我这个错误:

enter image description here

请注意,如果我使用ANSI编码保存脚本,脚本运行正常。

Windows Script Host引擎与UTF-8编码不兼容吗?

3 个答案:

答案 0 :(得分:4)

作为替代方案,您可以将文件另存为Windows Script File.wsf)。显然,Windows脚本宿主确实接受以UTF-8编码的XML。问题中的脚本将在WSF中编写为:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<job>
<script language="JScript"><![CDATA[
    var name = "Hello world!";
    WScript.echo(name);
]]></script>
</job>

答案 1 :(得分:3)

VBScript和JScript的可能源文件编码是ANSI或UTF-16(LE)。无法使用UTF-8。

答案 2 :(得分:0)

这对我有用:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<job>
<script language="JScript" src="Your-UTF-8-File.js" />
</job>

第一个问题是在js文件中需要BOM。第二个问题是我发现无法从WSF启用JScript 5.8模式,而Chakra也无法使用WSF。但无论如何我都会用它。

UPD。我找到了一个更好的解决方案:我有一个符合丑陋的WScript要求的引导加载程序,在其中我正在使用UTF-8和eval()中的ADODB.Stream读取文件他们,这样我甚至可以在Chakra上运行没有BOM的UTF-8 JavaScript!