从XML编码特殊字符

时间:2016-07-01 09:40:32

标签: xml encoding vbscript character-encoding asp-classic

我有一个XML,我用类型为Msxml2.DOMDocument.4.0的对象读取。在此XML中,我收到ë之类的字符。当我读到这个字符时,它会出现像这样的VBScript代码。 XML编码设置为UTF-8。

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

<?xml version="1.0" encoding="utf-8"?>

<shiporder>

  <DriverData>

    <DriverLicenseCountry>Australië</DriverLicenseCountry>

  </DriverData>

</shiporder>

这是我用来创建对象的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,sNoeud是节点名称。 objNode.Txt正在返回那个奇怪的角色。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

不完全确定这里的问题是什么,因为@JonSkeet point's out你还没有解释&#34;你在哪里看到那个角色&#34; < / em>的

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

进行了快速测试
Option Explicit
Dim xml: Set xml = CreateObject("Msxml2.DOMDocument.6.0")
Call xml.Load("test50.xml")

Dim node: Set node = xml.selectSingleNode("//DriverLicenseCountry")

WScript.Echo node.Text

我的测试使用Msxml2.DOMDocument.6.0因为我的系统没有安装Msxml2.DOMDocument.4.0

按预期获得以下输出

>cscript /nologo test50.vbs
Australië

如果您在使用经典ASP的IIS等服务器环境中使用它,那么确保输出正确编码还涉及其他步骤,但到目前为止,您已经说过将其作为独立脚本运行。