2012-08-22 148 views
0

我試圖更新XML類型的列。要插入將特殊字符XML插入到SQL

文本中的XML字段: 「&決策協議!」

文字轉換成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碼爲「&#x12」的字符有問題。

如果我將&#x12替換爲&#x20,它可以工作!

你能幫我嗎?

預先感謝您

+0

此鏈接可以幫助你http://social.msdn.microsoft.com/Forums/en-US/biztalkediandas2/thread/7bb66f58-df7d-4a8a- a53e-80a4b3d6b38c – RedEyedMonster

回答

0

我解決了我的問題。

此字符來自ORACLE數據庫上的SQL obtenues視圖。 ORACLE上的字符 - 由SQL SERVER上的interpreted解釋。

我會盡我認爲一個替代

0

這些控制字符是not supported in XML version 1.0 documents

您應該能夠在文檔的version屬性中將您的版本更改爲1.1,在這種情況下文檔應該進行驗證。

+0

謝謝你的回覆,我不知道。 但是當我用1.1替換版本1.0時,SQL SERVER返回錯誤:XML聲明語法不正確 – Kevin

+0

Jukka的評論似乎是正確的,因爲這些似乎不是您想要的字符。 –

1

字符引用&#x12;&#x13;表示在XML 1.0中不允許的控制字符。這裏真正的問題是它們不表示文本中的字符。字符「↨!」是U + 21A8上下箭頭,帶有BASE和U + 203C雙精度標記,因此應寫爲&#x21a8;&#x203c;

獲得奇數字符引用的原因可能是在CP437編碼中,「↨!」放置在代碼位置12和13(十六進制)中。所以這是一個編碼混淆,並且一些轉換應用了錯誤的轉換。在XML中,字符引用中的數字總是指Unicode碼數字。

+0

謝謝你的回答。 我轉換器具很多XML 我使用SQL「FOR XML PATH」文本 所以我不能測試,如果每個字符低於ASCII碼20.治療就會過長 把我的XML 1.1版一個好方法,但拒絕SQL SERVER。 – Kevin

+0

即使可能,使用XML 1.1也不能解決問題。它仍然不會使引用表示正確的字符。我認爲你需要找出編碼不正確的操作發生在哪裏。 –