首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlDocument.Load()方法无法解码euro (euro)

XmlDocument.Load()方法无法解码euro (euro)
EN

Stack Overflow用户
提问于 2010-12-09 22:10:39
回答 3查看 7.2K关注 0票数 1

我有一个XML文档file.xml,它是用Iso-Latin 15(也就是Iso-Latin 9)编码的。

代码语言:javascript
复制
<?xml version="1.0" encoding="iso-8859-15"?>
<root xmlns="http://stackoverflow.com/demo">
  <f>€.txt</f>
</root>

从我最喜欢的文本编辑器中,我可以看出这个文件是用Iso-Latin-15正确编码的(它不是UTF-8)。

我的软件是用C#编写的,希望提取元素f

代码语言:javascript
复制
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("file.xml"); 

在现实生活中,我有一个XMLResolver来设置凭证。但基本上,我的代码就是这么简单。加载过程很顺利,我没有抛出任何异常。

现在,我在提取值时遇到的问题是:

代码语言:javascript
复制
//xnsm is the XmlNameSpace manager
XmlNode n = xmlDoc.SelectSingleNode("//root/f", xnsm); 
if (n != null)
  String filename = n.InnerText;

Visual Studio调试器显示filename = □.txt

它可能只是一个Visual Studio错误。不幸的是,File.Exists(filename)返回false,而文件实际上是存在的。

怎么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-09 22:16:04

不要只使用调试器或控制台将字符串显示为字符串。

相反,转储字符串的内容,一次一个字符。例如:

代码语言:javascript
复制
foreach (char c in filename)
{
    Console.WriteLine("{0}: {1:x4}", c, (int) c);
}

这将以Unicode代码点的形式向您显示字符串的实际内容,而不是受当前字体可以显示的内容的限制。

使用Unicode code charts查找指定的字符。

票数 4
EN

Stack Overflow用户

发布于 2010-12-09 22:15:57

如果我没记错的话,XmlDocument.Load(string)方法总是假定使用UTF8,而不管编码是什么。

您必须使用正确的编码创建一个StreamReader,并将其用作参数。

代码语言:javascript
复制
xmlDoc.Load(new StreamReader(
                     File.Open("file.xml"), 
                     Encoding.GetEncoding("iso-8859-15"))); 

编辑:

我偶然发现了微软的KB308061。有一段很有趣的话:

XML在

文档的XML声明部分中指定编码声明。例如,以下声明指示文档采用UTF-16UNICODE编码格式。请注意,此声明仅指定文档的编码格式,并不修改或控制数据的实际编码格式。

票数 5
EN

Stack Overflow用户

发布于 2010-12-09 22:20:48

  1. 您的xml是否正确地定义了其编码?encoding="iso-8859-15“..在理想情况下,您应该将您的内容放在一个

元素中。因此,xml看起来像<f><![CDATA[€.txt]]></f>

  1. Ideally,您还应该用等效的url编码(或http编码)值对所有特殊字符进行转义,因为xml通常用于通过http.

进行通信。

我不知道欧元的确切转义代码..但它会是这样的东西

代码语言:javascript
复制
<f><![CDATA[%3E.txt]]></f>

以上内容应该可以使make能够通过xml正确地进行通信。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4399105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档