什么是Unicode

   对于英文来说,ascii码 0-127就足以代码所有字符,对于中文而言,则必须使用两个字节(byte)来代表一个字符,具第一个字节必须大于127(所以我们有许程序判断中文都是以ascii码大于127作为条件) 。
   以上用两个字节来表示一个中文的方式,在习惯上称为双字节(即DBCS: Double-Byte Character Set),而相对之下,英文的字符码就称为单字节SBCS(Single-Byte Character Set)。 
   虽然双字节(DBCS)足以解决中英文字符混合使用情况,但对于不同字符系统而言,必须经过字符码转换,非常麻烦。例如:中英文混合情况,日文,韩文等等。 
   为解决这个问题,Apple, Xerox, Microsoft, IBM, Novell, Borland...很多公司联合起来制订了一套可以适用于全世界所有国家的字符码,就称为Unicode 。


Unicode的特点是: 
   不管哪一国的字符码均以两个Byte表示,例如"A"在Unicode则是16进制 41和00的组合,即4100,高位41(转换为Ascii码即是65=A),Windows NT/2000以Unicode来表示字符集,例如你可以看到MS SQL Server中产生的SQL文件可以选择是以Unicode来保存还是以普通格式来保存,如果你以Unicode保存,则在95/98平台许多软件均无法正确读出其格式。 
   同时你还可以注意到95/98中API定义,许多名称结尾是有一个A的,例如 :WriteProfileStringA  ,而在NT/2000操作系中,提供了两套API,另外一个命令是WriteProfileStringW,以W 结尾的API只适用于NT / 2000。(在NT中使用以W结尾的API函数效率比A结尾的要快,因为省去了Unicode和DBCS/SBCS的转换过程) 。
   这样我们经常要用到的判断字符串长度的函数,在NT和95/98下执行结果不同,

 

   如下:(下面代码适合于VB, ASP) 
                95/98中:
                len("abc中国") 返回 7 (因为每个中文作为两个Ascii码来看)
                nt/2000中:
                len("abc中国") 返回 5 (因为每个字符都作为一个Unicode来看)


 (PB不存在以上情况,除非你在NT下使用PB的Unicode版本,通常我们大家使用的均是PB的Windows 32位版本)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值