在Windows脚本宿主中运行UTF-8编码的JScript或VBScript文件出现问题

6

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

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

当我运行它时,它给我这个错误信息: enter image description here 请注意,如果我使用ANSI编码保存脚本,则可以正常运行。
Windows Script Host引擎不兼容UTF-8编码吗?
3个回答

6

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


是的,那也是我的猜测。 - c00000fd
4
有关此事是否有官方文档记录? - Cheran Shunmugavel
很好,如果这个问题有官方文档记录的话就更好了。 - Grodriguez

5
作为替代方案,您可以将文件保存为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>

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中也不能使用。但是我仍然使用它。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接