--------------------------------------------------------------------------------
1. 概念篇
1.1 什么是字符集?
1.2 什么是排序顺序?
1.3 什么是字符集转换?
2. 配置篇
2.1 如何配置字符集的转换类型
2.2 如何配置服务器端缺省字符集
2.3 如何配置客户端缺省字符集
2.4 如何选择ASE字符集使之支持简体中文字符
2.5 如何查看服务器端、客户端字符集
3. 错误处理篇
3.1 为什么会出现字符集转换失败
4. 附:如何安装cp936字符集
1. 概念篇
1.1 什么是字符集?
字符集是字符(包含字母,数字,符号和非打印字符等)以及所指定的内码所组成的特定的集合。通常一个字符集包含一个字母表中的字符,例如拉丁字母表被使用在英语语言中,那么如果要使用拉丁字符,就要配置使用英语语言集中的特定的字符集合――拉丁语言字符集。这里为什么特指了是英语语言集呢?因为字符集是基于某种操作系统平台和某种语言集支持的。语言集的集合被称为语言组,它可能包含一种或多种语言。本地字符集是基于特定语言组中所包含的一种或多种语言支持的,在特定操作系统平台上编码的集合。
在Client/Server系统中,支持多语言的数据处理,但是所有的语言必须属于同一个语言组。例如,从下表可以看出,如果服务器中的数据用组1中的字符集,则同一数据库中可以有法语,德语,英语以及该组中的其它语言。而在这个数据库中就不能同时存储日语,法语了。
这里请注意一个非常特别的字符集—Unicode—它支持世界上超过650种语言的国际字符集。Unicode允许在同一服务器上混合使用不同语言组的不同语言。
表1-1 Adaptive Server支持的语言和字符集
注意:表中所显示的所有字符集,因为任何字符集的前128(十进制)个字符都包含拉丁字母表,所以所有字符集都支持英语。各字符集中前128个字符之外的字符各不相同,用于支持不同的本地语言字符。
1.2 什么是排序顺序?
每种字符集都有一种或多种排序顺序,Adaptive Server使用它们存储数据。排序顺序与特定的语言或语言组及特定的字符集联系密切,不同的语言对同样字符的排序是不同的,因此,需要特定语言的排序顺序,以便正确地对字符进行排序。另外,排序顺序与特定地字符集也密切相关,对于特定字符集可使用的排序顺序位于字符集目录的排序顺序定义的文件中(.srt文件)。
有关字符集及其可用排序顺序的列表,如下所示:
表1-2可用的排序顺序
排序顺序用于
――创建索引
――将数据存入按索引排序的表
――指定order by子句
对于不同类型排序顺序的解释
二进制排序顺序:
对于所有字符集都至少提供一个二进制排序顺序,这一排序顺序基于字符集中分配给代表每个字符的代码(“二进制”代码)的算数值,适用于每个字符集的前128个字符和亚洲语言。当字符集支持一种以上的语言时,二进制排序顺序将会得出不正确的结果,这时就应该选择其它排序顺序了。
字典排序,区分大小写,区分重音:
分别对大写和小写字母进行排序。字典排序顺序识别字母的各种重音形式,并将它们排在相关联的非重音字母之后。
字典排序,不区分大小写,区分重音:
按字典顺序排序,大写字母与小写字母等同,在排序结果中大小写字母混合使用。对于避免表中名称的重复条目很有用。
字典排序,不区分大小写,区分重音,具有优先级:
在排序时不区分大小写,在所有其它条件相同时,大写字母具有高的优先级(即大写字母先出现)。
当order by子句中指定的列与表的聚簇索引键值相匹配时,使用这种排序顺序可能导致大表性能降低,因此,不建议使用这种排序顺序,除非特意要求大写字母排在小写字母之前。
字典排序,不区分大小写,不区分重音:
将加重音格的字母与未加重音格的相关联字母同等对待,它在排序中混合了重音字符。
1.3 什么是字符集转换?
为保持客户端与服务器之间的数据完整性,数据必须在字符集之间进行转换,目的是跨机器和字符集使用时,确保“a”还是“a”,此过程就是字符集转换。
