存储过程不喜欢utf-16

时间:2010-09-24 11:21:34

标签: sql-server xml stored-procedures

全部,

我在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>'

完美无缺。

有什么想法吗?

1 个答案:

答案 0 :(得分: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>'