我无法在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);
文件内容:
如何从数据库中正确检索特殊字符?
答案 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