2.4.2. 应用软件
在操作系统之外的软件,都在此处称为应用软件。
本文以数据库为例,说明应用软件是如何支持中文的。
冯诺依曼体系,构造了“外存->内存->CPU”的体系结构。所以,信息处理的一个环节,就是存储。数据库要存储数据,普通文本编辑器也要保存数据,这样,信息基本上都要“持久化”存储起来。
从外存到内存,文件被打开,数据被读入,读入后,就要被处理,这就有个识别的问题,计算机需要知道读到内存里的是什么、该怎么处理为好。
如果信息要被传输到客户端,那么,信息就有个网络传输的过程(如果是网络传输,因涉及两个操作系统,两头可能支持的编码不一样,则数据传输就可能存在一个“编码转换”的过程)。
一些信息被处理后,是要显示给用户看的,所以又有了输出的过程。
所以,这些过程,在数据库中都存在。我们一起看看KingbaesES数据库中同语言有关的过程是怎么样的。
操作步骤 | 说明 |
初始化数据目录(指定“--locale”参数) | 告诉操作系统,对待本数据目录要以什么Locale处理 |
创建数据库,指定数据库的编码 | 告诉数据库管理软件(kingbase数据库引擎),本库中的数据,是以什么编码方式存储和需要用相应的编码规则解释 |
创建表,插入数据 | 查阅客户端对应的环境中,Locale的设置,告知服务器,如果服务器的库的编码(上一步中指定的编码)和客户端不一致,按以下方式处理: 1) 当客户端和服务器端编码相同,不需要转换; 2) 当客户端编码是ASCII时,无论服务器是什么编码都不需要进行转换; 3) 当服务器编码是ASCII时,无论客户端是什么编码都不需要进行转换;但是目前对于ASCII不兼容字符集(例如GBK和GB18030)中的非ASCII字符,服务器不接受,会报错。 4) 其它情况按照服务器中存在的字符集转换规则进行转换,如果系统中不存在两种字符集之间的转换,则报错。
|
查询表 | 本步骤除了有上一步涉及的服务器向客户端的编码转换问题外,还有的是结果集的显示的问题。 结果集的显示,此时依赖于客户端的Locale环境。如客户端为的Locale支持GBK,查询出来的数据的编码客户端不支持或不兼容,则从GB18030库中查询出GBK中不存在的字符,则界面显示的就会是乱码。 |
所以,我们可以有个结论是:应用软件自己也可以支持对各种编码(实则是支持各种字符集的处理)的处理。典型的例子还有:
浏览器菜单项中“查看”菜单项有“字符编码”子菜单,提供了对多种字符集的解释支持。
通常的邮件客户端,如foxmail,菜单项“查看”的子菜单“编码”也提供了对多种字符集的解释支持。