作者:朱金灿
来源:http://blog.csdn.net/clever101/
使用VC开发时面对字符集的选择,我总想起《深入浅出MFC》里的一句名言:理想如果不向实际做点妥协,理想就会归于尘土。曾经想过完美的软件肯定是使用unicode字符集,因为那是实现多语言版本所需要的。《Windows核心编程》也列出一堆理由劝我们使用unicode字符集,最大的好处当然是软件本地化的需要,另外一些好处是:
1.可以很容易地在不同语言之间进行数据交换。
2.使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。
3.提高应用程序的运行效率
微软实际上也大力推行unicode的,比如从VS 2003开始VC方面的项目都是默认使用unicode字符集。但是在公司实际开发中我记忆中没有用过unicode字符集,都是使用多字节字符集。究其原因,在于兼顾历史。试想系统基本基于以前的多字节字符集的底层模块和多字节字符集的开源库,谁有勇气将其改用unicode字符集一一重新编译呢?即使有勇气,其潜在的不确定风险也实在太大了。而《Windows核心编程》列出的一些理由,近似理想境界的:软件的多语言版本对于国内大多数软件更像一个有点遥远的梦想,所谓unicode版本比多字节版本运行得更快,在硬件飞快发展的今天估计只存在于理论之中,这种细微差别用户基本上不会察觉,更提不上构成效率瓶颈。
但是,我们真的不需要unicode吗?万一我们真的需要推出多语言版本呢,那时我们估计一边修改由于字符集不兼容的部分代码一边想:要是一开始就使用unicode字符集该多好啊!想到这,我想我们现在能做的估计就是下面这些:
1.在开发之初就评估一下开发多语言版本的必要性,如果在多语言版本在不远的将来就计划推出,就应早作准备,比如底层不动,上层界面层采用unicode字符集,这样只需改动上层调用底层的接口(就是将unicode字符转换为多字节字符传给底层接口)。
2. 在开发过程中尽量采用兼容多字节字符集和unicode字符集的类型和函数(这里我说的是Windows环境下的开发),比如字符类型采用TCHAR,字符串使用_T宏包含。这样日后的多字节转unicode的改造的工作量就会少许多。
参考文献:
1. 《Windows核心编程》第四版,英文原书名 Programming Applications for Microsoft Windows Fourth Editio,作者 Jetfrey Richter,译者 王建华等