在SQL Server中存储特殊的Unicode字符并在.NET中进行检索

时间:2019-01-16 13:11:04

标签: .net sql-server

我无法在SQL Server中正确存储特殊的Unicode字符,然后再检索它们。

SQL Server设置:

create table TestUni
(
    UniCol nvarchar(20)
)

insert into TestUni values ('')
insert into TestUni values ('電')

现在此命令返回问号:

select len(UniCol), UniCol from TestUni

2    ??
1    ?

当我创建一个.NET客户端以读取数据时,它还会返回问号:

var sqlConnection = new SqlConnection("***");

sqlConnection.Open();

var sqlCommand = new SqlCommand("select * from TestUni", sqlConnection);
        var reader = sqlCommand.ExecuteReader();

var str = string.Empty;

while(reader.Read())
{
    str += reader["UniCol"];
}

File.WriteAllText("d:\\test.txt", str);

文件内容:

enter image description here

如何从数据库中正确检索特殊字符?

1 个答案:

答案 0 :(得分:7)

您需要使用N前缀来表示要输入的Unicode值

create table TestUni
(
  UniCol nvarchar(20)
)

insert into TestUni values ('')
insert into TestUni values ('電')
insert into TestUni values (N'')
insert into TestUni values (N'電')

select len(UniCol), UniCol from TestUni