尝试将XML内容存储到SQL Server 2005失败(编码问题)

mar*_*c_s 10 c# xml sql sql-server-2005

伙计们,

我有一个web服务,返回ISO-8859-1编码的数据 - 因为它不是我的,我不能改变:-(

出于审计目的,我想将这些调用生成的XML存储到SQL Server 2005表中,其中我有一个类型为"XML NULL"的字段.

从我的C#代码中,我尝试使用参数化查询将此XML内容存储到XML字段中,例如

SqlCommand _cmd = new SqlCommand("INSERT INTO dbo.AuditTable(XmlField) VALUES(@XmlContents)", _connection);

_cmd.Parameters.Add("@XmlContents", SqlDbType.Xml);
_cmd.Parameters["@XmlContents"].Value = (my XML response);

_cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

麻烦的是 - 当我运行此代码时,我收到一个错误:

消息9402,级别16,状态1,行1
XML解析:第1行,字符xy,无法切换编码

?? 我试图弄清楚我可以在哪里以及如何"切换"编码 - 到目前为止没有运气.这究竟意味着什么?我无法在SQL Server 2005中使用ISO-8859-1编码存储XML?或者有一个技巧:a)告诉SQL Server 2005只接受这种编码,或b)在存储到SQL Server之前自动将webservice响应转换为UTF编码?

感谢任何提示,指示,提示!渣

gbn*_*gbn 5

你需要转换为utf-16

即使我使用它,我也不是SQL Server中的XML专家,但去年我们遇到了同样的问题,而且与发送的xml相比,SQL中声明的字符串数据类型不匹配.

  • @gbn - 这个答案有一个死链接. (3认同)
  • 这是不正确的 - 无需转换为UTF-16.请参阅http://stackoverflow.com/a/8998183/751158. (2认同)