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。