为了扩大对@马丁的回答是:
您在SQL Server中如何设置 “字符集” 取决于你所使用的数据类型。如果您正在使用:
NVARCHAR
,NCHAR
和NTEXT
(NTEXT
已被弃用,不应该被用来作为的SQL Server 2005)都使用Unicode字符集,这不能被改变。这些数据类型全部编码为UTF-16 LE(Little Endian)– 16位编码,每个“字符”为2或4字节–,这也不能改变。对于这些数据类型,正在使用的排序规则仅影响区域设置(由Collation的LCID确定),它确定用于排序和比较的规则集。
XML
,像N
-prefixed类型,使用Unicode字符集和被编码为UTF-16 LE(小端),和既不那些可以改变。但与其他字符串数据类型不同,没有与XML
数据关联的归类,因为它不能被排序或比较(至少先不将其转换为NVARCHAR(MAX)
[首选]或VARCHAR(MAX)
)。
VARCHAR
,CHAR
,和TEXT
(TEXT
已被废弃,不应该被用作的SQL Server 2005)都为8位编码,每个“字”是1或2个字节。字符集由与每个归类关联的代码页确定。的排序和比较规则取决于整理的类型使用:
- SQL Server排序规则:这些都开始
SQL_
名称和自SQL Server 2000中已被否决,虽然是(不幸)仍被广泛使用的今天。这些使用简单规则,如sys.fn_helpcollations()
返回的description
字段中所示的“SQL Server排序顺序”编号。
- 窗口排序规则:这些都有名字,做不是开始于
SQL_
。这些排序规则允许非Unicode字符串数据使用排序规则的LCID指示的Unicode排序和比较规则。
话虽这么说,找出哪些字符集(CHAR
,VARCHAR
和TEXT
–即非Unicode –数据)正在被使用,运行下面的查询,并密切关注CodePage
领域。该LCID
字段表示用于排序和比较规则为N
-prefixed –即统一–类型以及非Unicode类型如果使用Windows排序规则的语言环境:
SELECT *,
COLLATIONPROPERTY(col.[name], 'CodePage') AS [CodePage],
COLLATIONPROPERTY(col.[name], 'LCID') AS [LCID]
FROM sys.fn_helpcollations() col
ORDER BY col.[name];
代码页ID可以通过Code Page Identifiers的MSDN页面翻译成更有意义的内容。
关于O.P.上@的comment马丁的回答是:
不幸的是,他们选择了误导性/不完整的术语“整理”,这显然是指排序顺序:整理定义。
尽管微软在选择名称时可以做得更好,但不幸的是,在诸如“编码”,“字符集”,“整理”等术语方面存在一般性的,整个行业的混淆。微软对“整理”的使用(或滥用)仅仅造成了大规模混乱。但是,由于“utf8”具体是而不是字符集,所以在MySQL中这种混淆也很明显.--)。
UTF-8是Unicode字符集的几种编码之一。另外两种编码是UTF-16和UTF-32。所有这三种编码都以不同的方式表示完全相同的Unicode字符集。查看MySQL字符集列表– 11.1.10 Supported Character Sets and Collations –“ucs2”,“utf8”,“utf8mb4”,“utf16”,“utf16le”,“utf32”字符集实际上并不是字符集,而是各种表示形式的字符集Unicode字符集。但是,鉴于“字符集”和“编码”这两个概念之间的重叠,难以避免混淆。11.1.10.1 Unicode Character Sets页面指示“utf8mb4”,“utf16”,“utf16le”和“utf32”字符集是完整的Unicode字符集,而“ucs2”和“utf8”是Unicode字符集的子集,特别是第65,536个代码点(又称Basic Multilingual Plane(BMP))。
有关跨各种RDBMS的排序规则的详细信息,请参阅我的回答下面的问题上DBA.StackExchange:
Does any DBMS have a collation that is both case-sensitive and accent-insensitive?
他们是在SQL Server同样的事情。通过在'varchar'列上设置排序规则,您还可以设置代码页。 –
谢谢Martin。记录在哪里?当然,我通过精细的手册(MSDN在线),但我没有看到它。 – dotancohen
排序规则控制SQL Server中字符串的物理存储。排序规则指定[** both **]代表每个字符的位模式**和**字符排序和比较的规则。 [链接](http://msdn.microsoft.com/en-us/library/ms186356.aspx) –