c# - 使用 ADO.Net 将 utf-8 写入 SQL Server 文本字段并维护 UTF-8 字节

标签 c# sql-server utf-8 sqlcommand

我有一些编码为 UTF-8 的 xml,我想将其写入 SQL Server 中的文本字段。 UTF-8 与 Text 字节兼容,因此它应该能够执行此操作,然后读出仍编码为 utf-8 的 xml。

但是特殊字符(如 ÅÖ)在 UTF-8 中是多字节的,会在途中发生变化。

我有这样的代码:

byte[] myXML = ...

SqlCommand _MyCommand = new SqlCommand(storeProcedureName, pmiDB.GetADOConnection());
_MyCommand.CommandType = CommandType.StoredProcedure;
_MyCommand.Parameters.Add("xmlText", SqlDbType.Text);
_MyCommand.Parameters["xmlText"].Value = Encoding.UTF8.GetString(myXML);
_MyCommand.ExecuteNonQuery();

我的猜测是,将 xml 字节数组更改为字符串会将特殊字符更改为 UTF-16 字符,然后再次更改为 Latin1。 Latin1 ÖäÅ 与 UTF-8 ÖäÅ 不同。

如何将 UTF-8 xml 字节写入文本字段而不更改它们?

最佳答案

将列定义为 NText 或 NVarchar

关于c# - 使用 ADO.Net 将 utf-8 写入 SQL Server 文本字段并维护 UTF-8 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883308/

相关文章:

C# 无法清除大型泛型集合的内存

c# - 从数组列表中排序数据

c# - 匿名类型的 IEqualityComparer

c# - WCF session 和到数据库的连接

mysql - MySQL 支持 GO 吗?

encoding - 如何在 JBoss 7 中正确接收 UTF-8 字符?

c# - 防止 EDMX 合并冲突和 Cherry Picking 问题

sql - 如何使用cte查询和解析相邻列表层次结构?

python - 根据字节数正确拆分 unicode 字符串

c++ - 在gdb tui中打印utf 8符号