0

我们将更改现有数据库和列的排序规则。我们使用两个不同的排序规则Turkish_CI_AS、SQL_Latin1_General_CP1254_CS_AS,我们将使用SQL_Latin1_General_CP1_CI_AS。

我想知道新排序规则是否支持土耳其语特殊字母?那么,像ç、ı、ğ或ü这样的字母会变成不同的字符吗?

4

1 回答 1

1

排序规则与字符编码不同。更改排序规则只会更改字符排序的比较规则,而不是它们在数据库中的表示方式。但是,根据Collat​​ion and Code Page Architecture中的表格,客户端驱动程序将数据的排序规则用作将非 unicode字符映射到特定代码页的提示。

因此,如果您的列是 VARCHAR 或 CHAR 类型,那么数据(显然)改变,因为以前在CP 1254中的字符将被解释为CP 850中的字符。如此ç (\231)将成为þ (\231)等等。严格来说,您可以将客户端中的数据重新解释为您想要的任何代码页,但实际上这是不可行的,并且需要大量低级(即驱动程序)知识。

但是,如果您的列是 NVARCHAR 或 NCHAR 则编码不会改变,因为字符将被UCS-2LE编码和操作(ç \u00e7将保持不变ç \u00e7)。唯一会改变的是比较和排序规则(这会影响著名的土耳其排序规则 dotted 和 dotless I/i 比较规则)。

于 2013-01-28T08:00:06.007 回答