Sql Server中的数据应该使用Unicode吗?

use*_*673 1 .net sql sql-server unicode database-design

我想在Sql Server 2005数据库中存储英语,法语,德语,意大利语和西班牙语,以便与.NET应用程序一起使用.我可以逃避不使用Unicode吗?这些语言会有问题吗?

Rem*_*anu 7

在SQL Server 2008 R2中将有Unicode压缩,请参阅SQL Server 2008R2中的Unicode压缩.这将使nvarchar与varchar的存储空间问题在很大程度上成为过去的问题.您仍处于SQL 2005,但您应该在将来时编程.

varchar与nvarchar的问题只是问题的一个方面.另一个方面是执行正确的整理(nvarchar需要与varchar一样多).由于列不能具有多个排序规则,因此常见的解决方案是将数据分离为每种语言的字符串表,其中使用适用于每种语言的适当排序规则来声明列.

更新

Microsoft SQL Server 2005中的国际功能对SQL Server 2005国际数据进行了长时间的讨论.顺便说一下,像"只使用UTF-8"这样的评论就是错失了重点.SQL Server存储编码为UCS-2的nvarchar数据,就是它,周期.您可以将XML数据存储为UTF-8或UTF-16,但没有理智的数据库人员会建议使用XML来存储您的字符串.

此外,虽然您可能会使用1252这样的编码,但只需一次整理就不会轻易逃脱.特别是因为你有西班牙语作为一项要求,而西班牙语整理是众所周知的问题.例如,您的西班牙语用户希望'Chiapas'能够排在'Colima'之后,但是拉丁语排序将在'Chiapas'之后排序'Colima',请参阅使用Collat​​ions.比较时会出现其他问题,其中不同的名称可能会相等,这也是由于错误的归类选择.