码迷,mamicode.com
首页 > Windows程序 > 详细

Windows程序设计中Unicode的认识

时间:2019-01-12 16:39:10      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:数据   增加   设计   eric   经验   基于   数字   价格   过程   

 什么是Unicode?

       简单来说,Unicode是ASCLL字符编码的一个扩展。那什么是ASCLL?,并且为什么要引用Unicode呢?用ASCLL字符编码的优点和缺点又是什么呢?Unicode又是以何种方式扩展ASCLL字符编码。下面的表述将一步一步解决这些问题。

什么是ASCLL字符编码?

     美国信息交换标准码(ASCLL:American Standard Code for Information Interchange)起始于50年代后期。开发ASCLL的过程中,由于价格原因,采用了7bit标准的代码字符集。最终代码就有26个大写字母、26个小写字母、10个数字、32个符号、32个控制代码、1个空格,总共128个代码。

ASCLL优点:26个字母代码是连续的,大写字母和小写字母可以通过改变一位数据而相互转换;10个数字也能直接转换;

ASCLL的问题:ASCLL是一个真正的美国标准,故而不能满足许多非英语国家的需求。那么此时就需要对ASCLL进行扩展,

例如:1967年ISO推出的ASCLL的变种、代码0x40、0x5B、0x5C、0x5D、 0x7B、0x7C、0x7D 为国家使用保留

这显然不是一个最佳的国际解决方案,但这并不能保证一致性。

扩展ASCLL

     在小型机开发初期,就严格建立了8位字节。因此,如果使用一个字节保存字符,则可以由128个的字符表示ASCLL,那么还有多出来的128位用来表示其他需要的字符,这256字符被写入rom中。基于这种方式推出的ANSI字符集。

双字节字符集

     迄今为止,我们已经看到256个字符的字符集。但中国、日本、韩国的象形文字符号高达21000个。如何容纳这些字符并保持ASCLL的兼容性呢?解决方案就是双字节字符集(DBCS:double byte character set)。DBCS从256代码开始,就像ASCII一样。与任何行为良好的内码表一样,最初的128个代码是ASCII。然而,较高的128个代码中的某些总是跟随著第二个字节。这两个字节一起(称作首位字节和跟随位字节)定义一个字元,通常是一个复杂的象形文字。看看细节是如何的:

     ASCII不是空出来了高128个码位吗?第一个byte在这高128里取值,再和第二个byte结合就可以表示最多128x256=32768个字符了。程序在处理字符串的时候,遇到有byte<128的就认为是ASCII,遇到>=128的就把下一个byte也读进来,换算成一个字符。

Unicode

    我们所面临的问题:世界上的书写语言不能仅用8位的代码表示。以前的解决方案包括ANSI、双字节字符集都不能满足需求。什么是真正的解决方案呢?根据日常编码的经验,如果8位不能满足我们的需求那么便增加位数使其扩增,这是再直接和自然不过的方法了,这也是非常简单的Unicode的原理,Unicode用16位表示字符,与上述方案不同,Unicode可直接表示65536个字符。这对表示世界上的大多数字符是十分充裕的。

 

Windows程序设计中Unicode的认识

标签:数据   增加   设计   eric   经验   基于   数字   价格   过程   

原文地址:https://www.cnblogs.com/gefandui/p/10259982.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!