sql-server - 存储过程不喜欢 utf-16

标签 sql-server xml stored-procedures

全部,

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

相关文章:

SQL Server 2008 - 缩小事务日志 - 有什么自动化方法吗?

mysql - 如何将 mysql 查询转换为 microsoft sql 查询

SQL Server - 具有 2 个组变量和 2 个聚合计算的动态透视

java - 如何在图表引擎图下添加 TextView

mysql - 使用变量设置mysql INNODB AUTO_INCRMENT表值

php - 使用 CI 捕获 SIGNAL SQLSTATE 消息

sql - 如何根据与先前日期相关的条件按日期找出不同的人数?

java - 像在 Android 的 Facebook 应用程序中一样创建登录布局

c# - XPATH 为带有命名空间的 XML 返回 null

sql - 这个简单的 (Oracle) SQL 存储过程代码有什么问题?