SQLServer中的varchars是否保留其编码?

时间:2012-02-07 17:04:12

标签: c# sql-server

如果我将来自C#的windows-1252字符串(例如带有“智能引号”的字符串)保存到SQLServer数据库的记录中,如果我将其读回另一个字符串变量,是否会保留编码?

1 个答案:

答案 0 :(得分:5)

是,不,或者。

SQL Server中的每个VARCHAR列都有一个" collat​​ion",大致相当于一个代码页(字符集)加上一个排序顺序。

如果排序规则的代码页可以存储字符串中的所有字符,则应正确往返。如果不是,不是。

如果您的排序规则是Latin1_General的变体,则应该能够存储整个windows-1252字符集。

有关详情,请参阅此处:

请注意,如果您尚未在字段上设置排序规则,则会使用数据库的默认排序规则,通常为Latin1_General_CI_AS

了解字符集问题非常重要。如果您需要将字符存储在一个字段中,而这些字段不能全部安装到同一代码页中,则需要使用NVARCHAR。在NVARCHAR字段中,可以存储所有字符,并且排序规则仅控制排序顺序和相等比较。