首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解码UCS-2编码的XML?

如何解码UCS-2编码的XML?
EN

Stack Overflow用户
提问于 2013-09-18 17:05:10
回答 3查看 499关注 0票数 0

Sql查询正在返回以下xml -

代码语言:javascript
复制
 <Table>
    <date>2014-01-15</date>
    <Life_x0020__x0026__x0020_Zeal>3</Life_x0020__x0026__x0020_Zeal>
    <Total>3</Total>
  </Table>

在这里,表中的列名是Life & Zeal,但xml显示的是Life_x0020__x0026__x0020_Zeal

我参考了MSDN,发现它是一种UCS-2编码。我正在从C#代码中读取此xml,并希望将其解码回Life & Zeal

该怎么做呢?

注意--我使用Sql Server 2008FOR XML PATH命令来生成这个xml

EN

回答 3

Stack Overflow用户

发布于 2013-09-18 17:14:15

这与UCS2无关。

正如Kami指出的,包含非法字符的列名(对于XML节点名)是用其Unicode代码点等效项进行转换的,因此从技术上讲,您不能做您想做的事情。

我建议您在SELECT语句中添加一个别名

代码语言:javascript
复制
SELECT [Life & Zeal] AS LifeAndZeal

以避免XML中的这些字符。

票数 2
EN

Stack Overflow用户

发布于 2013-09-18 17:09:43

在XML中,节点名称中不能有SpaceAmpersand字符。我想这就是为什么它们在输出中被改变的原因。

不可能更改代码来显示这些值。但是,您应该能够更改SQL以在输出中对其进行重命名。

票数 1
EN

Stack Overflow用户

发布于 2013-09-18 17:14:40

更改编码的最简单方法是在读取XML文件(或流)时

代码语言:javascript
复制
using(XmlReader r = XmlReader.Create(new StreamReader(
                        fileName, Encoding.GetEncoding("UCS-2"))))
{
    while(r.Read())
    {
        Console.WriteLine(r.Value);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18868016

复制
相关文章

相似问题

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