|
|
1
224
有一个问题
或者如果您只需要UTF-8(这是我经常需要的):
至于为什么您不能将XML保存到数据库中,如果您希望我们能够诊断/修复它,您必须向我们提供有关您尝试时发生的情况的更多详细信息。 |
|
|
2
126
将XML文档序列化为.NET字符串时,编码必须设置为UTF-16。字符串在内部存储为UTF-16,因此这是唯一有意义的编码。如果您想以不同的编码存储数据,可以使用字节数组。
SQL Server的工作原理与此类似;传递到
记住这一点,这里有一些实用的转换方法。
|
|
|
3
20
以下是将对象序列化为XML列的示例:
|
|
4
1
|
|
|
5
1
<TL;DR>
修复应该简单到:
(详细答复如下)
只要您遵循如何在SQLServer中创建XML数据的规则,XML是如何生成的其实并不重要。在回答这个问题时,我有一个更全面的解释(包括用于说明以下要点的工作示例代码): How to solve âunable to switch the encodingâ error when inserting XML into SQL Server ,但最基本的是:
和 总是
不,你的
不需要提供XML声明。如果缺少,则假定编码为UTF-16 LE
如果
将字符串作为
另一方面,如果指定了XML声明,那么
必须
使用匹配的8位或16位数据类型传递到SQL Server。因此,如果您有一个声明,声明编码是UCS-2或UTF-16,那么
作为
例如,使用
正如您所看到的,它甚至可以处理超出标准ASCII的字符
导致以下错误:
因此,抛开所有这些解释不谈,你最初问题的完整解决方案是:
你显然是在把绳子传进来
|
|
|
6
-2
其他地方可能已经讨论过,但只要将XML源的编码行更改为“utf-16”,就可以将XML插入到SQL Server“XML”数据类型中。
结果是所有XML文本都被插入到“XML”数据类型字段中,但“header”行被删除。您在结果记录中看到的只是
使用“已应答”项中描述的序列化方法是将原始头包含在目标字段中的一种方法,但结果是剩余的XML文本包含在XML文本中
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |