我在尝试使用 MSXML 读取 UTF-8 编码的 XML 文件时遇到了 classc ASP / VBScript 的问题。该文件已正确编码,我可以使用所有其他工具看到这一点。
构造的 XML 示例:
<?xml version="1.0" encoding="UTF-8"?>
<itshop>
<Product Name="Backup gewünscht" />
</itshop>
如果我尝试在 ASP 中执行此操作...
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("input.xml", FOR_READING)
XML = ts.ReadAll
ts.Close
Set ts = nothing
Set fso = Nothing
Set myXML = Server.CreateObject("Msxml2.DOMDocument.4.0")
myXML.loadXML(XML)
Set DocElement = myXML.documentElement
Set ProductNodes = DocElement.selectNodes("//Product")
Response.Write ProductNodes(0).getAttribute("Name")
' ...
...并且名称包含特殊字符(具体是德语变音符号)变音符号“双字节码”的字节被重新编码,所以我最终得到了两个完全蹩脚的废话字符。应该是“ü”变成“ü” - 在我的输出中是四个字节,而不是两个(正确的 UTF-8)或一个(ISO-8859-#)。
我究竟做错了什么?为什么 MSXML 认为输入是 ISO-8859-# 以便尝试将其转换为 UTF-8?