如果我将来自C#的windows-1252字符串(例如带有“智能引号”的字符串)保存到SQLServer数据库的记录中,如果我将其读回另一个字符串变量,是否会保留编码?
答案 0 :(得分:5)
是,不,或者。
SQL Server中的每个VARCHAR列都有一个" collation",大致相当于一个代码页(字符集)加上一个排序顺序。
如果排序规则的代码页可以存储字符串中的所有字符,则应正确往返。如果不是,不是。
如果您的排序规则是Latin1_General
的变体,则应该能够存储整个windows-1252字符集。
有关详情,请参阅此处:
请注意,如果您尚未在字段上设置排序规则,则会使用数据库的默认排序规则,通常为Latin1_General_CI_AS
。
了解字符集问题非常重要。如果您需要将字符存储在一个字段中,而这些字段不能全部安装到同一代码页中,则需要使用NVARCHAR。在NVARCHAR字段中,可以存储所有字符,并且排序规则仅控制排序顺序和相等比较。