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

标签 c# sql xml sql-server-2005

各位,

我有一个以 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();

问题是 - 当我运行这段代码时,我得到一个错误:

Msg 9402, Level 16, State 1, Line 1
XML parsing: line 1, character xy, unable to switch the encoding

??我试图弄清楚在哪里以及如何“切换”编码 - 到目前为止运气不好。这到底是什么意思?我不能在 SQL Server 2005 中使用 ISO-8859-1 编码存储 XML??或者是否有技巧 a) 告诉 SQL Server 2005 只接受此编码,或 b) 在存储到 SQL Server 之前自动将 web 服务响应转换为 UTF 编码?

感谢您的任何提示、指点和技巧! 马克

最佳答案

You need to convert to utf-16

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

关于c# - 尝试将 XML 内容存储到 SQL Server 2005 失败(编码问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/384974/

相关文章:

sql - 将可为空的列添加到 SQL Server,默认值为 null

php - SQL添加列名关键字

c++ - 尝试使 XML 阅读器在 C++ 中工作

c# - Unity 2D 地面碰撞器工作,但 OnTriggerEnter2D 未检测到

c# - 如何根据属性对 C# 列表进行排序?

c# - 如何自动释放List中的对象?

mysql - SQL Concat 和 intvalue

c# - 加载xml文件到内存

c# - xml解析好奇—— "greater than"in attribute

c# - 如何设置 Socket.ConnectAsync 超时?