2010-09-24 22 views
3

全部,存儲過程不喜歡utf-16

我在SQL Server 2005上有一個接受XML參數的存儲過程。 當我執行:

exec PutResultsOnDb '<?xml version="1.0" encoding="utf-16"?><loads of Xml data>' 

我得到的錯誤: XML parsing: line 1, character 39, unable to switch the encoding

然而,當我做

exec PutResultsOnDb '<?xml version="1.0" encoding="utf-8"?><loads of Xml data>' 

它完美的罰款。

任何想法?

+0

這可能有助於http://stackoverflow.com/questions/805259/storing-utf-16-unicode-data-in-sql-server – 2010-09-24 11:28:29

回答

3

第一種情況失敗,因爲您聲明您在ASCII字符串中使用UTF-16編碼XML。第二種情況最有可能起作用,因爲你沒有127以上的任何字符,所以UTF-8與ASCII無法區分。

如果要將XML聲明爲UTF-16,則需要使用前綴N(例如,)將該字符串聲明爲UCS-2(即mostly compatible)。下面應該工作:

exec PutResultsOnDb N'<?xml version="1.0" encoding="utf-16"?><loads of Xml data>'