我在使用经典的ASP/VBScript读取UTF-8编码的XML文件时遇到了问题,我可以看到这个文件已经正确编码,因为所有其他工具都能正常解析。
下面是一个构建的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?