我不确定我是否做错了什么,但如果我将其保存在Windows Script Host
中,我似乎无法通过.js
运行以下JScript使用UTF-8
编码的文件:
var name = "Hello world!";
WScript.echo(name);
当我运行它时,它给了我这个错误:
请注意,如果我使用ANSI
编码保存脚本,脚本运行正常。
Windows Script Host
引擎与UTF-8
编码不兼容吗?
答案 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!