将UTF8字符串保存到SQL Server

时间:2012-02-23 11:19:35

标签: c# sql-server utf-8

我在UTF8中有一个字符串,如:

Thermal Oxide: 0 Å to 40 μm

我希望将其保存在SQL Server中。

当我将其保存在数据类型ntext / nvarchar中时 - 它会像这样保存:

Thermal Oxide: 0 ? to 40 ?m

我该怎么办?

2 个答案:

答案 0 :(得分:12)

在引用的字符串前加N

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

答案 1 :(得分:3)

  

我在UTF8中有一个字符串,如:

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

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