全部,
我在 SQL Server 2005 上有一个接受 XML 参数的存储过程。 当我执行时:
exec PutResultsOnDb '<?xml version="1.0" encoding="utf-16"?><loads of Xml data>'
我得到错误:
XML 解析:第 1 行,字符 39,无法切换编码
但是当我这样做的时候
exec PutResultsOnDb '<?xml version="1.0" encoding="utf-8"?><loads of Xml data>'
它工作得很好。
有什么想法吗?
最佳答案
第一种情况失败,因为您声明在 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>'
关于sql-server - 存储过程不喜欢 utf-16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3786535/