将特殊字符XML插入SQL

时间:2012-08-22 07:50:40

标签: sql xml character

我正在尝试更新XML类型的列。

要插入XML字段的文字:“& Decision ↨!协议”

转换为XML的文本:<?xml version="1.0" encoding="utf-16"?><Informations xmlns="http://monschema"><Text lGic="fdf475bc-9fed-4f61-b321-f81949cb51ca" id="71e231e6-ecbd-4848-ba6f-004bdddefb79">&amp; Décision &#x12; &#x13; Accord</Text></Informations>

错误:消息9420,级别16,状态1,第7行 XML解析:第1行,字符263字符不兼容XML

我不明白为什么带有ascii代码“&amp;#x12”的字符有问题。

如果我用&amp;#x20替换&amp;#x12,它就可以了!

你能帮助我吗?

提前谢谢

3 个答案:

答案 0 :(得分:1)

字符引用&#x12;&#x13;表示XML 1.0中不允许的控制字符。这里真正的问题是它们并不表示文本中的字符。字符“↨!”是U + 21A8向上箭头与基础和U + 203C双排除标记,因此它们应写为&#x21a8;&#x203c;

获得奇数字符引用的原因可能是在CP437编码中,“↨!”放在代码位置12和13(十六进制)中。所以这是编码混乱,并且某些转换应用了错误的转换。在XML中,字符引用中的数字始终表示Unicode代码编号。

答案 1 :(得分:0)

这些控制字符为not supported in XML version 1.0 documents

您应该可以在文档的version属性中将版本更改为1.1,在这种情况下文档应该验证。

答案 2 :(得分:0)

我解决了我的问题。

此字符来自ORACLE数据库的SQL obtenues视图。 角色 - &gt;在ORACLE上由SQL SERVER上的interpreted解释。

我会在视图中进行替换