如何从vbs读取utf-8 xml并获取正确的字符代码

时间:2010-04-27 15:37:29

标签: xml vbscript utf-8

我正在尝试从vbs脚本中读取xml文件。 Xml以utf-8编码,并具有适当的标题

从vbs脚本我使用microsoft xmldom解析器来读取xml:

Dim objXMLDoc
Set objXMLDoc = CreateObject( "Microsoft.XMLDOM" )
objXMLDoc.load("vbs_strings.xml")

在xml内部我正在尝试使用&#nnn;表示法按代码编写字符。然后我从vbscript中读取这个字符并尝试使用Asc()函数获取它的代码。对于某些字符,它工作正常,读取代码等于一个写入。但对于某些字符Asc()始终返回代码63。它可能是什么?

示例:

如果xml包含<section>&#195;<section>,并且在脚本中我有Section变量来表示这个xml节点,那么代码:

Asc(Section.Text)

将返回值195,它是ok

如果xml包含<section>&#110;<section>,则代码为:

Asc(Section.Text)

将返回值110,它是ok

但是,如果xml包含<section>&#130;<section><section>&#156;<section><section>&#140;<section>

Asc(Section.Text)

将返回值63,这绝对不是好事。

你知道为什么吗?

2 个答案:

答案 0 :(得分:2)

代码点decimal 130,156和140与Unicode字符集中的任何字符都不对应(未定义123-192)。 Asc正在使用的默认字符映射器会将此类错误映射到?字符63.这些代码点会映射到哪些字符?

我怀疑您想要的代码是:&#8218; &#339;&#338;

答案 1 :(得分:2)

改为使用AscW:

http://msdn.microsoft.com/en-us/library/zew1e4wc%28VS.80%29.aspx

编辑:那就是说,AnthonyWJones可能是正确的,你的文件要么使用字符引用,要么错误地声明了输入编码。