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

传递  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

 

 

你可能感兴趣的:(sql,sql,xml,server,String,encoding,Parsing)