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

Isa*_*son 2 c# sql-server

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

Ben*_*Ben 5

是的,没有或者可能.

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

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

如果你的校对是一个变种,Latin1_General你应该能够存储整个windows-1252字符集.

更多信息,请参见此处:

请注意,如果您尚未在字段上设置排序规则,则它将使用数据库的默认排序规则,通常是这样Latin1_General_CI_AS.

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