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