处理特殊字符时出错

时间:2011-06-23 18:41:53

标签: c# xml escaping

我正在创建一个原子XML数据包作为REST服务请求的一部分。 但是,当XML中某个标记的值包含注册商标的符号时,会出现问题。

XML通过WebRequest作为“PUT”发送。当问题字符在XML中时,完整的XML包不会进入服务器。数据包被截断,我在服务器上看到错误“开始标记中出现意外的EOF”。

我注意到服务器上请求的第一部分(在被截断之前)包含问题字符“®”。我希望看到“®”。

我认为我只需要担心XML中的这些字符:

双引号:“

单引号:'

小于:<

大于>

&符号:&

如何逃避或处理我的字符串,以便我可以发送任何字符而没有问题?

2 个答案:

答案 0 :(得分:1)

Xml会以这种方式欺骗你。并不是说某些字符是无效的,而是大片的unicode是defined as valid,并且除此之外的任何东西都是被禁止的。在没有更复杂逻辑的情况下实现这一目标的诀窍是使用CDATA section

答案 1 :(得分:0)

首先,你的术语很松散。你是什​​么意思“其中一个标签的价值”?是元素名称或文本内容中的违规字符吗?

如果必须,可以通过转义非ASCII字符来解决问题,例如“注册商标符号”变为®。但是,这不应该是必要的。最好解决问题的根本原因,即文档的创建者及其接收者对其编码有不同的想法。您的配置中存在导致此错误传达的内容,我无法知道它可能是什么。