为什么使用U n i c o d e

当开发应用程序时,当然应该考虑利用U n i c o d e的优点。即使现在你不打算对应用程序进行本地化,开发时将U n i c o d e放在心上,肯定可以简化将来的代码转换工作。此外, U n i c o d e还具备下列功能:

• 可以很容易地在不同语言之间进行数据交换。

• 使你能够分配支持所有语言的单个二进制. e x e文件或D L L文件。

• 提高应用程序的运行效率(本章后面还要详细介绍)。

WINDOWS和COM对U n i c o d e的支持

下面让我们进一步明确一下“M i c r o s o f t公司对U n i c o d e支持的情况”:

• Windows 2000既支持U n i c o d e,也支持A N S I,因此可以为任意一种开发应用程序。

• Windows 98只支持A N S I,只能为A N S I开发应用程序。

• Windows CE只支持U n i c o d e,只能为U n i c o d e开发应用程序。

虽然M i c r o s o f t公司试图让软件开发人员能够非常容易地开发在这3种平台上运行的软件,

但是U n i c o d e与A N S I之间的差异使得事情变得困难起来,并且这种差异通常是我遇到的最大的问题之一。请不要误解, M i c r o s o f t公司坚定地支持U n i c o d e,并且我也坚决鼓励你使用它。不过你应该懂得,你可能遇到一些问题,需要一定的时间来解决这些问题。建议你尽可能使用U n i c o d e。如果运行Windows 98,那么只有在必要时才需转换到A N S I。

不过,还有另一个小问题你应该了解,那就是C O M。

当M i c r o s o f t公司将C O M从1 6位Wi n d o w s转换成Wi n 3 2时,公司作出了一个决定,即需要字符串的所有C O M接口方法都只能接受U n i c o d e字符串。这是个了不起的决定,因为C O M通常用于使不同的组件能够互相进行通信,而U n i c o d e则是传递字符串的最佳手段。

如果你为Windows 2000或Windows CE开发应用程序,并且也使用C O M,那么你将会如虎添翼。在你的整个源代码中使用U n i c o d e,将使与操作系统进行通信和与C O M对象进行通信的操作变成一件轻而易举的事情。

如果你为Windows 98开发应用程序,并且也使用C O M,那么将会遇到一些问题。C O M要求使用U n i c o d e字符串,而操作系统的大多数函数要求使用A N S I字符串。那是多么难办的事情啊!我曾经从事过若干个项目的开发,在这些项目中,我编写了许多代码,仅仅是为了来回进行字符串的转换。

C运行期库对U n i c o d e的支持

请注意,所有的U n i c o d e函数均以w c s开头,w c s是宽字符串的英文缩写。若要调用U n i c o d e函数,只需用前缀w c s来取代A N S I字符串函数的前缀s t r即可。

注意       大多数软件开发人员可能已经不记得这样一个非常重要的问题了,那就是M i c r o s o f t公司提供的C运行期库与A N S I的标准C运行期库是一致的。ANSI C规定,C运行期库支持U n i c o d e字符和字符串。这意味着始终都可以调用C运行期函数,以便对U n i c o d e字符和字符串进行操作,即使是在Windows 98上运行,也可以调用这些函数。换句话说, w c s c a t、w c s l e n和w c s t o k等函数都能够在Windows 98上很好地运行,这些都是必须关心的操作系统函数。

对于包含了对s t r函数或w c s函数进行显式调用的代码来说,无法非常容易地同时为A N S I和U n i c o d e对这些代码进行编译。本章前面说过,可以创建同时为A N S I和U n i c o d e进行编译的单个源代码文件。若要建立双重功能,必须包含T C h a r. h文件,而不是包含S t r i n g . h文件。

T C h a r. h文件的唯一作用是帮助创建A N S I / U n i c o d e通用源代码文件。它包含你应该用在源代码中的一组宏,而不应该直接调用s t r函数或者w c s函数。如果在编译源代码文件时定义了_ U N I C O D E,这些宏就会引用w c s这组函数。如果没有定义_ U N I C O D E,那么这些宏将引用s t r这组宏。

最新文章

  1. 皮一皮:当有人在我身边时...
  2. C/C++内存管理详解
  3. Elasticsearch--建议器
  4. asp批量生成html静态页面方法
  5. matlab 回音的消除,回声消除AEC - 源码下载|数值算法/人工智能|matlab例程|源代码 - 源码中国...
  6. python3(八)sys模块
  7. 迪杰斯特拉算法 两点间最短路径的选择
  8. 一文看懂用Python读取Excel数据
  9. java.util.ResourceBundle用法
  10. esxi 环境 西数硬盘测试软件,总算基本完美的折腾好ESXI+群晖+NVME
  11. 易语言5.4一键破解工具
  12. Hadoop配置和启动
  13. MAC配置IOS、Android真机以及appium环境配置,最新版(一)
  14. p17.matplotlib:图中图
  15. try/catch 的解释与用法
  16. 北京圣思园JAVA培训教学视频汇总
  17. greedy策略求解活动选择问题 ActivitySelectProblem
  18. Python使用嵌套循环实现图像处理算法
  19. 【GaussDB精品课第3期】GaussDB(for openGauss)配套工具介绍
  20. .metadata\.plugins\org.eclipse.wst.server.core

热门文章

  1. Canalys最新基础云市场报告:百度智能云排名第四,稳坐中国第一阵营
  2. 监听文本框输入开发仿新浪微博限制输入字数的textarea插件。
  3. MT4_应用于外汇交易的量化模型
  4. 数字华容道java_最强大脑数字华容道背后的数学知识
  5. 解除浏览中百度对大文件下载限制
  6. 半路出家,JAVA两年工作生涯。
  7. java水彩画效果滤镜_自带高饱和滤镜的水彩画(内附详细工具介绍)!
  8. 计算机软件著作权登记常识
  9. MySQL SELECT查询语句练习2(中级篇)
  10. 一次buge寻找过程