您的位置:首页 > 数据库

传递 xml string到sql server时的sp_xml_preparedocument无法解析问题

2011-01-13 20:39 531 查看
传递 xml string到sql server时的sp_xml_preparedocument无法解析问题

"XML parsing error: Switch from current encoding to specified encoding not supported."

"系统不支持指定的编码方式。"

这是因为SQL中的nvarchar中的字符是Unicode编码,varchar是ASCII编码造成的

故定义传递给sp_xml_preparedocument的xml字符串时一定要注意输入的xml字符串的编码方式和定义的SQL变量的编码方式相同。

例:

DECLARE @doc varchar(max)
SET @doc = N'<?xml version="1.0" encoding="gb2312" ?><ROOT><ROW Num="1" /></ROOT>' --正确
SET @doc = N'<?xml version="1.0" encoding="UTF-8" ?><ROOT><ROW Num="1" /></ROOT>' --正确
SET @doc = N'<?xml version="1.0" encoding="UTF-16" ?><ROOT><ROW Num="1" /></ROOT>' --错误
...
DECLARE @doc nvarchar(max)
SET @doc = N'<?xml version="1.0" encoding="gb2312" ?><ROOT><ROW Num="1" /></ROOT>' --错误
SET @doc = N'<?xml version="1.0" encoding="UTF-8" ?><ROOT><ROW Num="1" /></ROOT>' --错误
SET @doc = N'<?xml version="1.0" encoding="UTF-16" ?><ROOT><ROW Num="1" /></ROOT>' --正确
...


附一些编码方式的资料:

UTF-8 http://zh.wikipedia.org/zh/UTF-8

UTF-16 http://zh.wikipedia.org/zh-cn/UTF-16

GB2312 http://zh.wikipedia.org/zh-cn/GB2312
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: