保存UTF8字符串到SQL Server

问题描述:

我有一个字符串像UTF8:保存UTF8字符串到SQL Server

Thermal Oxide: 0 Å to 40 μm 

,我想它保存在SQL Server中。

当我将它保存在数据类型NTEXT/nvarchar的 - 它可以节省这样的:

Thermal Oxide: 0 ? to 40 ?m 

我能做些什么?

+1

这一切都取决于您如何保存它。 – 2012-02-23 11:22:41

+0

**如何**你保存它? 'Nvarchar'确实**能够存储这个字符串 - 完全没有问题。 – 2012-02-23 11:26:18

先于引述字符串N

INSERT INTO someTable (myField) VALUES (N'Thermal Oxide: 0 Å to 40 μm') 

我喜欢UTF8有一个字符串:

其实,不,你不能 - 你有一个unicode字符串。但是,UTF8仅适用于编码方式,即存储方式。如果你的意思是你想存储它,那么很好;简单地说:确保您存储它的列是nvarchar(somelen)(或类似),并且您使用参数来存储它。如果你只是使用cmd.Parameters.AddWithValue("paramName", yourString);那就没问题了(对于TSQL如insert [tablename] (...fields...) values (..., @foo)等)。同样,只要列是nvarchar(somelen)或类似的,任何ORM/micro-ORM /其他数据库工具都可以正常工作。例如,使用“dapper”:

string s = "Thermal Oxide: 0 Å to 40 μm"; 
connection.Execute("insert [tablename] (colname) values (@s)", new {s}); 
+0

嗨,马克!为什么'new {s}'而不是's''?此外,字符串's'具有前面的单引号但不包含单引号。 – dotancohen 2012-02-23 11:50:19

+0

@dotancohen单引号不应该在那里,对不起。重新“简单's'” - dapper使用它作为参数名称; 'new {s}'代表一个匿名类型,其中一个字符串成员's'的值为'“Thermal ...”' - 我们需要将它作为参数化命令运行 – 2012-02-23 11:55:54

+0

谢谢。我需要google dapper。 – dotancohen 2012-02-23 13:51:42