XML中特殊字符的编码

XML中特殊字符的编码,xml,encoding,vbscript,character-encoding,asp-classic,Xml,Encoding,Vbscript,Character Encoding,Asp Classic,我使用类型为Msxml2.DOMDocument.4.0的对象读取XML。在这个XML中,我接收像ë这样的字符。当我读到这个字符时,它以VBScript代码的形式出现,如下所示�。XML编码设置为UTF-8 这是我收到的XML的一部分: 澳大利亚人 这是我用来创建对象的vbScript代码: Set oXml=Server.CreateObject(“Msxml2.DOMDocument.4.0”) 我这样读节点: Function GetXMLval2(oDoc, sNoeud)

我使用类型为
Msxml2.DOMDocument.4.0
的对象读取XML。在这个XML中,我接收像
ë
这样的字符。当我读到这个字符时,它以VBScript代码的形式出现,如下所示
。XML编码设置为UTF-8

这是我收到的XML的一部分:


澳大利亚人
这是我用来创建对象的vbScript代码:

Set oXml=Server.CreateObject(“Msxml2.DOMDocument.4.0”)
我这样读节点:

Function GetXMLval2(oDoc, sNoeud)
   Dim oNoeud
   Dim objNode
   Dim colNodes
   Dim sRes

   sRes=""

   Set colNodes=oDoc.selectNodes(sNoeud)

   For Each objNode in colNodes
       sRes= objNode.Text 
   Next

   GetXMLval2=sRes

End Function
其中,
oDOC
是XML,
snooud
是节点名。
objNode.Txt
正在返回那个奇怪的字符


有什么想法吗

不完全确定这里的问题是什么,因为你没有解释“你在哪里看到那个角色”

考虑到这一点,我们在
cscript.exe

选项显式
Dim xml:Set xml=CreateObject(“Msxml2.DOMDocument.6.0”)
调用xml.Load(“test50.xml”)
Dim node:Set node=xml.selectSingleNode(“//driverlicensecocountry”)
Echo node.Text
我的测试使用
Msxml2.DOMDocument.6.0
,因为我的系统没有安装
Msxml2.DOMDocument.4.0

如预期的那样,得到以下输出

cscript/nologo test50.vbs 澳大利亚人

如果您在服务器环境中使用此脚本,例如IIS使用经典ASP,则需要执行其他步骤来确保输出正确编码,但到目前为止,您已经说过您正在以独立脚本的形式运行此脚本。

“我像这样读取节点”-如何处理它?我们不知道你在哪里显示/查看角色。这绝对重要,因为我们不知道你在哪里看到角色。如果您试图在不支持实际字符的地方显示它,这就可以解释问题。您是否能够从其他平台(例如使用.NET)正确读取XML文件(包括有问题的字符)?@lankymart在本部分中,它是独立的vbscript代码。你有什么想法吗?我如何在vbscript中设置编码,或者如何解决这个问题?我正在使用它在数据库中进行选择。感谢you@Sebastian如果这是一个独立脚本,为什么要使用
Server.CreateObject()
作为经典的ASP语法?VBScript使用
CreateObject()
否则运行此操作将导致
Microsoft VBScript运行时错误:需要对象:
cscript.exe
wscript.exe
@Sebastian中的“服务器”
,这将大大改变情况。看一看,我已经用我用来读取该值的代码更新了这个问题。请看一看,也许你在那里发现了什么。Thx@Sebastian我看不出什么明显的东西,除了你的函数逻辑有点不对劲。仍在等待您的回复。对不起,我的错误,我们在代码中做了一件愚蠢的事情。我们使用request.binaryread从请求中获取xml。从二进制读取到字符串的转换,而不是ë,似乎会返回一个Ã,我不明白为什么会这样。无论如何,谢谢你的支持answer@Sebastian同样的问题是,在
binarydead()
之前看到的过程中,将UTF-8数据编码为ASCII。