热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

构筑稳健的中文Linux(下)

构筑稳健的中文Linux(下)--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
Linux是操作系统中的一朵奇葩,是中国软件发展的机遇。要使这朵奇葩在中国的大地上生根、发芽,开花,要想抓住Linux机遇,首先必须解决中文本地化的问题。上期我们已经介绍了中文Linux采用中文平台及Linux国际化中的用双字节/多字节编码代替单字节7位或8位编码、使用统一的大字符集ISO 10646等知识的介绍。要建筑稳健的中文Linux,我们还要认识Linux的本地化及Linux核心的修改等重要问题。

   3. 本地化数据库Locale DB

   国际化的第三个内容是搞好本地化数据库Locale DB。

   语言、字符集、文化习俗等组成一个软件运行时的本地环境Locale。一个Locale是从本地化特征中提取的执行环境。它包括语言、地域、字符集。Locale的格式是ZH_CN.GBK,表示中文(zh)、中国(CN)、字符集(GBK)。

   Locale可以一组Shell环境变量LANG、LC_ALL、LC_CTYPE、LC_COLLATE、LC_TIME、LC_MONETORY、LC_NUMERIC、LC_MESSAGES进行设置,也可以通过C语言国际标准中提供的setlocale()函数在应用程序中查询和设置。用户可以在运行时设置整个Locale的全部和部分。

   Setlocale()函数为应用程序开发者提供了一种具有设置所有或部分(称之为类别)本地化环境的工具,setlocale()函数的语法为:

   Char *setlocale (category,locale)

   Int category;

   Char *locale;

   其中category是五个类别之一的名字,这些类别的名字是:

   LC_CTYPE(提供字符分类和大小写区分功能);

   LC_COLLATE(提供字符串比较和排序功能);

   LC_TIME(提供日期和时间表示格式,如中国是年、月、日,美国是 月/日/年,英国是日/月/年);

   LC_MONETARY(提供货币表示格式,如中国为阿拉伯数字后加RMB,在财务表格中为$后写阿拉伯数字);

   LC_NUMERIC(提供数字表示格式)。

   另外,用LC_ALL的特殊值使setlocale()函数设置所有的类别。

   Locale数据库中除了上述本地环境服务,还包括消息服务和代码集转换。

   4. 输入、输出服务(I/O服务)

   输入法可分为两大类,即模式识别类和编码类。模式识别类包括声音输入法、光学字符识别(optical character recognition,OCR)、手写体识别等输入法。编码类主要是基于拼音、笔划、部首等输入法。

   图形界面的国际化与中文本地化,具体包括:

   建立中文输入模块的摘挂方法和界面;

   建立各种点阵汉字库、矢量轮廓汉字库、曲线轮廓汉字库的摘挂方法和界面;

   建立基于图形界面的汉字信息处理函数。

   图形界面的国际化处理主要在三个层次上:

   X字型服务器层(X Font Server)提供处理点阵、矢量轮廓、曲线轮廓文字;

   库函数层(Libarries)、提供有关X字型服务器的函数,如把字体装入服务器、调入、查询、释放字型;

   命令层(Commands)包括工具类和转换类命令:

   图形界面中文本地化提供以下应用程序:汉字造字工具、汉字图标编辑器、汉字图文编辑工具、汉字图形打印工具。

   Linux关于输入的标准还是限于键盘输入。在X11R6中,有XIM(X InputMehtod)标准。XIM是在应用程序和输入法之间的通信协议,目前还没有字符终端的输入法标准。

   本地化
   本地化(localization,L10n,取首尾两个字母,中间有10个字母)是向特定本地语言操作环境的转换。

   本地化工作主要包括:代码体系国家特征文件和输入、输出服务的具体实现。

   1.代码体系指采用的字符集,我国目前是GB2312、GBK、GB18030和GB13000。

   2.国家特征文件指Locale中的本地环境内容。

   3.输入、输出服务与国际化中的输入、输出服务密切相关。

   输入方法按其功能可分为:输入管理层、前端处理层、输入单元层、输入单元算法层、辅助区处理层。

   输入管理层是根据Locale环境自动到指定目录下找出所需的输入方法模块、将其启动或装入应用程序,并填入有关入口表,以便建立应用程序与输入方法之间的联系。

   前端处理层是对各个输入单元进行管理、负责解释特殊键的含义,切换输入单元,并把输入单元处理的结果存于相应的缓冲区中,以保证应用程序取走、或调辅助区处理层函数显示。

   输入单元层是根据输入单元的要求,对每个输入键事件进行解释、确定相应的动作、形成符合输入单元要求的输入串,并调用输入单元算法层的函数进行字典查找或代码转换运算,把查找结果返回前端处理层。

   输入单元算法层是根据上层函数送来的输入码串进行字典查找运算,并把查找结果返回上一层函数。

   辅助区处理层用来提供输入方法的界面,即时状态区、预编辑区和造字区类处理函数进行相应的管理。

   三、修改Linux的核心,使其完全支持UCS。
   国际化就是为了解决本地化,它是由一个一个“本地化”组成的。本地化要遵循国际化,本地化完全遵循了国际化,本地化只需要解决输入法和增加字型了。本地化的标准组织应尽量把本地化所需的内容加入到国际化中,并尽量遵循国际化。做好本地化的工作,就是为了消除本地化。什么时候不需要再做本地化的工作了,那就说明本地化和国际化的工作做好了。

   ISO 10646是彻底解决“代码壁垒”软件“千年虫”的方法。彻底实行ISO 10646就意味着放弃目前各国的字符集标准,包括中国的GB、美国的ASCII。完全实现UCS,就是在操作系统、高级程序语言、支持软件、应用软件、通信协议、网络都UCS化,即都可以支持UCS。而且一些相关硬件设备如终端、打印机也要支持UCS,因为基本ASCII的硬件设备会把UCS中的一些码值当成控制字符。这时整个系统都是完全国际化了,那时的本地化工作只是提供输入法和扩充字型(Font)。要彻底实行ISO 10646,首先应从操作系统开始做起,对我国来说就是从Linux开始做起。

   UCS从1993年颁布至今已7年了,但进展不大。要完全国际化只能一步一步地走。第一步已制定了UCS,下一步就是在操作系统上完全支持UCS。然后各种软件、硬件都逐个完全支持UCS。因为操作系统是所有软件的基础。不动Linux核心,进行的国际化/本地化本质上仍是一个“中文平台”。因为它仍是按字节处理,是架构在操作系统之上的中文处理环境。只有在操作系统上实现按字符处理、支持宽字符,彻底抛弃ASCII和各种“国家标准”, 完全支持UCS ,才能彻底解决问题。中文平台的前途是不光明的,Windows上不就有过多种中文平台吗,后来都被微软的核心汉化彻底击败。

   我们以前搞中文平台,是因为我们没有自己的操作系统,也没有掌握源代码,是不得以而为之,是权宜、无奈之举。现在Linux给了我们一个机遇。Linux开放源代码,这给了中国软件业一个千载难逢的好机遇。Linux也要不断创新、不断发展。我们不能总是跟在洋人后面爬行,“打补丁”,无所作为。我们也要对Linux进行改进,展现中国人的聪明才智,对Linux做出自己的贡献。

   对Linux的改进主要有两个方面。一是针对Linux的安全漏洞进行改进。八月底在北京召开的Linux World大会上,中科院软件所副所长孙玉芳介绍说,中科院软件所和红旗公司针对Linux的安全漏洞已经进行改进,做了大量工作,并将于近期公布源代码。二是按UCS的要求改造Linux,使其完全支持UCS。对Linux在核心加以改造,以彻底支持UCS,是中文Linux的最终必须要走的道路,也是Linux的正确发展道路。如果Linux的核心不加以改造,以支持UCS,Linux也将会被经济全球化,软件国际化的潮流冲没。那时,彻底支持UCS的操作系统就将取代目前Linux的地位。所以彻底从核心改造Linux以支持UCS,也是有关Linux沿着正确方向健康发展的大事。

   脱离经济全球化,软件国际化的潮流,脱离UCS的大方向,孤立地搞民族化、本地化可能会是事倍功半,甚至事与愿违的。

   完全实现UCS,不仅促使操作系统改造,对通信程序、对很多应用程序也会有影响。

   通信协议也要考虑支持UCS。国家标准《信息技术 因特网中文规范——电子邮件传输格式》正是利用UCS作为通用信息交换代码。用户要通过因特网发送信息时,用本地字符集编码与UCS的转换模块将其转换成UCS-2或其变体形式(UTF-7、UTF-8)后在因特网上传送。接收方可以很容易地将UCS-2转换成本地的字符集编码。这样省去了接收方识别和判断对方发来的信息是用什么编码,也省去了用很多种转换方法将传送来的不同编码的信息分别转换成本地码。只需用一种UCS-2与本地码的转换方法就行了。如果发送方和接收方都用UCS,又可省去收、发时的转换。由此也可看出完全支持UCS的巨大好处。

   四、完全支持UCS,为中国软件业带来巨大好处。
   采用UCS还可大大降低各种软件本地化的工作量,一个为日本或朝鲜设计的软件,可以很容易地改为中文版本,只须改一改输入法和菜单而已。使用UCS也为中国软件走向世界提供了方便之路,专为中文开发的软件可以轻而易举地移植为国际上各地都能使用的版本,因为处理文本的核心软件并不需要改造。

   使用UCS也将大大降低各种软件本地化的成本,用户购买软件的费用也降低了,用户选择软件的范围也更大了。

   使用UCS使各种软件本地化的成本大大降低,使得软件开发商可以把人力,资金更多地投入到新产品的开发,一个产品在世界各地“同步推出”也更易于实现,用户也能更快地用上最新版本的新软件,那时我们可以说,我国自己开发的民族软件也是国际通用的国际软件。

   Linux和相关应用软件完全支持UCS后,我国可以通过制定标准,要求进入我国的类似软件也必须支持UCS,从而推动国际各软件公司也支持UCS。

   至于终端和打印机等硬件,我国已能制造、质量也不比国外的差。硬件设备支持UCS问题不会很大。我国率先实现终端和打印机等硬件完全支持UCS,还可通过制定标准保护国产产品,并可促进国际上的同类硬件产品也完全支持UCS。

   从核心改造Linux、使其完全支持UCS,下一步我们还要开发完全支持UCS的应用软件。但是为了与现有的应用软件、硬件兼容,操作系统还必须提供一种转换机制,将其核心使用的UCS代码映射成基于字节的本地字符集编码。

   人们对微软的意见主要是微软的垄断阻碍了技术发展,产品在中国售价太高,不开放源代码,有“后门”。但是,微软的Wihdows、Office毕竟在市场的占有率为第一,它确有很多地方值得学习,如易学好用,又如从核心完全实现了对UCS-2代码体系的支持。应该说微软在这方面是走在前面了。Windows NT/95/98/2000核心中完全实现了对UCS-2代码体系的支持,它为不同语言的用户提供了一个统一的、基于UCS-2代码的操作系统核心,并且应用软件Office97等也是基于UCS-2代码的。Windows NT/95/98/2000提供一组码页(codepage)来完成UCS-2与现有应用兼容,实现与本地语言如GB/GBK、Big5、JIS等之间的转换。Linux是否也能如此,在操作系统完全实现对ISO 10646(GB13000)UCS代码的支持,通过类似于codepage的映射与现在应用程序兼容,而不必再使用GB。Linux在这方面应向Windows学习,并希望Linux能做得更好。

   XML是取代现在在Web上流行的HTML的新一代Web语言。国外很多基于Web的程序都是以XML为基础的。如微软的.net就是以XML为基础的。而XML使用的字符集就是ISO 10646,默认的字符集是UCS-2
推荐阅读
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 如何更改电脑系统的自动校时服务器地址?
    本文介绍了如何通过注册表编辑器更改电脑系统的自动校时服务器地址。通过修改注册表中的数值数据或新建字符串数值的方式,可以将默认的时钟同步服务器地址更改为自己所需要的域名或IP地址。详细步骤包括双击时间区域,点击internet时间,勾选自动校正域名设置定时等操作。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
author-avatar
gengjiang3_946
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有