如何在 windows 10 中使用 msxsl.exe 获取 UTF8 html

How to get UTF8 html using msxsl.exe in windows 10

我正在使用 msxsl.exe 从 XML 和 XSL 动态生成 HTML 文件。我使用 CreateProcess API 并在其中调用 msxsl.exe 用 C++ 编写了代码。由于 Windows 7 中的输出是 UTF8,我以相同的编码创建了所有关联文件(如 CSS 和 JavaScript)。一切正常。当我 运行 与 Windows 10 (LTSC) 中的相同应用程序时,JavaScript 未加载,因为 HTML 现在是使用 UCS-2LE BOM 编码生成的。我尝试在创建进程之前调用 SetConsoleOutputCP(CP_UTF8) 。这并没有解决我的问题。无论 OS 如何获得 UTF8 输出?

HTML 文件接受与 HTML 文件本身具有相同编码的 JavaScript。这是默认行为。 JavaScript 与其他编码一起使用时,可以使用 <script> 标签的 charset 属性(HTML script charset Attribute).

所以添加如下所示的字符集属性,我可以在所有 OS 中修复 JavaScript 的类型,而不管 HTML 编码如何。

<script type="text/javascript" src="MyJavaScript.js" charset="UTF-8"></script>

添加

<xsl:output encoding="UTF-8" /> 

传递给 msxsl.exe

的样式表