全部,
我在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 :(得分: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>'