代码页体系结构
排序规则控制 SQL Server 中的字符串物理存储。排序规则指定表示每个字符的位模式以及存储和比较字符使用的规则。
在计算机中,字符由不同的位模式(ON 或 OFF)表示。每字节有 8 位,这 8 位可以有 256 种不同的 ON 和 OFF 组合模式。因此,通过给每个位模式分配字符,使用 1 字节存储每个字符的程序最多可以表示 256 个不同的字符。2 字节有 16 位,这 16 位可以有 65,536 种不同的 ON 和 OFF 组合模式。使用 2 字节表示每个字符的程序最多可以表示 65,536 字符。
单字节代码页是字符定义,这些字符映射到每字节可能有的 256 种位模式中的每一种。代码页可以为大写和小写字符、数字、符号以及特殊字符 [如感叹号 (!)、at 符号 (@)、数字符号 (#) 或百分号 (%)] 定义位模式。每种欧洲语言(如德语或西班牙语)都有各自的单字节代码页。尽管所有代码页中用于表示从 A 到 Z 拉丁字母字符的位模式都相同,但用于表示重音字符的位模式却各不相同。
单字节字符集无法存储许多语言使用的所有字符。一些亚洲语言包含上千个字符;因此,每个字符必须使用双字节。双字节字符集正是为这些语言定义的,并且还为它们定义了代码页。
下表显示了 SQL Server 支持的代码页。
代码页 |
说明 |
---|---|
1258 |
越南语 |
1257 |
波罗的语 |
1256 |
阿拉伯语 |
1255 |
希伯来语 |
1254 |
土耳其语 |
1253 |
希腊语 |
1252 |
拉丁语 1 (ANSI) |
1251 |
西里尔语 |
1250 |
中欧语 |
950 |
繁体中文 |
949 |
朝鲜语 |
936 |
简体中文 |
932 |
日语 |
874 |
泰语 |
850 |
多语言(MS-DOS 拉丁语 1) |
437 |
MS-DOS 美国英语 |
多个排序规则可对非 Unicode 数据使用相同的代码页。例如,代码页 1251 定义西里尔语字符集。多个排序规则(如 Cyrillic_General、Ukrainian 和 Macedonian_FYROM_90)都使用此代码页。虽然所有这些排序规则都使用相同的位集表示非 Unicode 字符数据,但是它们所应用的排序和比较规则略有不同。这就是它们可以处理与排序规则关联的语言或字母表中正确顺序字符的字典定义的原因。