在 VB 中使用 Unicode API
2008-04-10 03:07:33来源:互联网 阅读 ()
在 VB 中使用 Unicode API
介绍
也许大家都知道,Visual Basic 内部的所有和字符串相关的函数使用的都是 Unicode。
Unicode 是一套字符集。与其他传统单一字节的字符集不同的是,它使用两个字节来表示一个字符,这使得可用字符的数量大大增加(理论上说,一个字节可以包含最多 256 个字符,而两个字节可以包含 65536 个字符)。在这里请注意,不要把 GB2312 之类的双字节字符集和 Unicode 混淆:前者既有单字节字符(如英文)也有双字节字符(如中文),这样使得管理十分麻烦,并且它只支持一种代码页;而 Unicode 的字符都是双字节的,使得管理、转换和使用字符串变得十分容易。并且它支持世界上的所有的常用文字,使得一个程序可以同时在屏幕上显示多种语言的文字,而不用关心当前的代码页。
好了在简单地介绍了 Unicode 之后,现在来介绍 Unicode API(什么?不知道什么是 API ?(汗)如果是那样的话这篇文章可能不太适合你)。
Windows NT 从一开始就在其内部使用 Unicode ,以至于其后续产品(Windows 2000、XP)都一直沿用它。而 Windows 95、98和 ME 就没有那么幸运,它们都一直使用单(双)字节的字符集。这样就使得同一个有关字符串的 API 有两个不同字符集的版本:Unicode 版和非 Unicode 版。在函数名上,Unicode 版的 API 具有一个 ''''W'''' 后缀代表 wide ,如:MessageBoxW;而非 Unicode 版的 API 具有一个 ''''A'''' 后缀代表 ANSI ,如:MessageBoxA。
在 Windows NT/2000/XP 上这两种版本的 API 都有,也就是说 Windows NT 支持 Unicode 和非 Unicode 字符集。而在 Windows 95/98/ME 上几乎所有 API 都只有其非 Unicode 版本,意味着它们之支持单(双)字节字符集。
VB 和 Unicode API
现在言归正传。VB 在使用了 Unicode 之后,可以享受到 Unicode 所带来的各种好处。不过,麻烦也随之而来了……
因为 Windows 95/98/ME 不支持 Unicode ,而 VB 只支持 Unicode ,所以当从 VB 里调用一个非 Unicode API 时,VB 先要把所有字符串都转换成非 Unicode 字符串,然后调用 API,最后把所有字符串再转换回 Unicode(见图1)。这样使得 API 的调用速度变得十分缓慢,而且效率很低。
┌─────────┐ ┌──────────────┐ ┌────────┐
│ │->│转换为非Unicode(A)│->│ │
│ │ └──────────────┘ │ API(A) │
│ VB程序(W) │ │ │
│ │ ┌─────────────┐ └────────┘
│ │<-│转换为Unicode(W)│<───────┘
└─────────┘ └─────────────┘
图1:调用非 Unicode API :需要转换来转换去
看到这里,也许有的人会问了“那为什么不用 Unicode API 呢?”在 API 查看器中的 API 都是非 Unicode 的(Alias 以 ''''A'''' 结尾),是因为兼容性问题。要让程序在 Windows 9x 和 NT 里都能执行,就必须要调用非 Unicode 的 API ,要不然的话会很麻烦;不过这是以性能为代价的。
如果程序需要高性能,经常使用需要传递字符串为参数的 API,而且只运行在 Windows NT/2000/XP 环境下的话(如服务器程序),完全可以用 Unicode API 来替换效率超低的非 Unicode API (见图2)。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash