UNICODE编程入门

简介

如果你编写的程序是针对非英语国家的用户,如中国、日本、东欧和中东地区,那么你一 定要熟悉 UNICODE 字符集。尤其是用 Visual C++/MFC 编写针对上述国家和地区的用户的程 序时,如果你想让自己的应用程序得到更广泛的用户,那么必须考虑代码 UNICODE 的兼容性 ,也就是说它既在 ASCII 模式下运行 ,也能在UNICODE 模式下运行。本文将介绍 UNICODE 的一些基本编程知识,澄清很多人(包括我自己)在这个问题上存在的模糊认识。对于任何 使用 Visual C++ 和/或 MFC 编程的人来说,这篇文章肯定值得一读。

UNICODE到底是什么?

UNICODE 是目前用来解决 ASCII 码 256 个字符限制问题的一种比较流行的解决方案。大 家知道,ASCII 字符集只有256个字符,用 0-255 之间的数字来表示。包括大小写字母、数 字以及少数特殊字符;如标点符号、货币符号等。对于大多数拉丁语言来说,这些字符已经 够用。但是,许多亚洲和东方语言所用的字符远远不止256个字符。有些超过千个。人们为了 突破 ASCII 码字符数的限制,试图用一种简单的方法来针对超过256个字符的语言编写计算 机程序。于是 UNICODE 应运而生。UNICODE 通过用双字节来表示一个字符,从而在更大范围 内将数字代码映射到多种语言的字符集。

Visual C++的解决方案

作为软件开发人员,如何熟练有效地使用 UNICODE 呢?如果你正在用 Visual C++ 编写 程序,UNICODE 兼容性意味着你的程序是否具有国际化特征,也就是说你的应用程序是针对 本地市场还是国际市场。一旦你作出了决定,那么就得在代码中实现具体细节。好在 Visual C++ 提供了很多内建功能来支持 UNICODE,在创建工程时就可以利用 Visual C++ 提供的这 些功能。在产生应用程序框架代码之前,AppWizard 允许开发人员决定是否支持 UNICODE。 Win32 SDK 包含有一些数据类型遵循 UNICODE 编码规则,MFC 以宏的形式提供了将一般文本 转换成 UNICODE 数据类型的途径。开发人员只需要稍微改变一下编写代码的习惯便可以轻松 编写支持 UNICODE 的应用。

字符串

C 程序员一般是用 char 关键字象下面这样来声明一个字符串数组:

char str [100];

象下面这样声明函数原形:

void strcpy( char *out, char *in );

为了将上面的声明改成支持双字节的 UNICODE 字符集,可以用下面的方法:

wchar_t str[100];

或者

void wcscpy( wchar_t *out, wchar_t *in );

此外,微软还提供一种通过预处理指令来实现 UNICODE。每当用 Visual C++ 创建新工程 时,只要确定是否支持另外一种字符集,则 AppWizard 将会在头文件中插入预处理指令。这 些指令告诉编译器程序想要支持何种字符集。这样在使用VC++提供的通用数据类型时,编译 器将用相应的数据类型把通用数据类型替换成所需要支持的字符集。这样很容易将代码重新 编译成支持其它字符集的程序。

为了在 Visual C++ 6.0 中激活 UNICODE 标准,可以这样做:打开工程文件后,从主菜 单中选择“Project | Settings”打开工程设置对话框 => 然后选择 “C/C++”标签 => 在“Preprocessor definitions”编辑框中添 加 UNICODE 或者 _UNICODE 预处理宏指令。如图一所示:

图一 Project Settings 对话框

时间: 2024-05-18 13:32:41

UNICODE编程入门的相关文章

COM编程入门第二部分——深入COM服务器

本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口.继上一篇COM编程入门之后,本文将讨论有关 COM服务器的内容,解释编写自己的COM接口和COM服务器所需要的步骤和知识,以及详细讨论当COM库对COM服务器进行调用时,COM服务器运行的 内部机制. 如果你读过上一篇文章.应该很熟悉COM客户端是怎么会事了.本文将讨论COM的另一端--COM服务器.内容包括如何用C++编写一个简单的不涉及 类库的COM服务器.深入到创建COM服务器的内部过程,毫无遮掩

ASP编程入门进阶(十四):Browser & Linkin

编程 一.Browser Capabilities组件 该组件最主要的作用是:提取识别客户端浏览器的版本信息. 其原理是这样的:当客户端浏览器向服务器发送页面请求时,同时会自动发送一个User Agent HTTP标题,而该标题是一个声明浏览器及其版本的 ASCII 字符串.而Browser Capabilities组件就将User Agent映射到在文件Browscap.ini中所注明的浏览器 , 并通过BrowserType对象的属性来识别客户浏览器. 若该对象在 browscap.ini

ASP编程入门进阶(一) 安装配置服务器

编程|服务器|服务器 申明:asp编程入门进阶系列文章COPY自http://www.cnbruce.com/blog/ 部分运行代码请到该站进行在线测试ASP编程入门进阶(一):安装配置服务器 鉴于ASP脚本语言是在服务器端IIS或PWS中解释和运行,并可动态生成普通的HTML网页,然后再传送到客户端供浏览的这一特点.我们要在本机上进行调试,那就要求我们的个人电脑具有服务器的功能. 不要看到"服务器"三个字就感到担心:我的机子配置这么底,性能这么差,是不是不能配啊.放心!配个服务器,

ASP编程入门进阶(二):认识表单

编程 申明:asp编程入门进阶系列文章COPY自http://www.cnbruce.com/blog/ 部分运行代码请到该站进行在线测试说实话,无论是asp,php还是jsp进行网络编程的时候,都离不开和用户的交互.而人机对话的平台,基本上是靠相应的文本.列表框进行输入,然后通过按钮提交送至数据库的.所以学习网络编程就一定要了解这些输入平台相关的东西:表单(form)其基本格式如下:<form name="form1" action="xxx.asp" me

ASP.NET编程入门随想之宽容(修改版)

asp.net|编程 相关文章:ASP.NET编程入门随想之宽容 古老的山谷村民生活富足,守旧老人维护着经典和秩序.一位不满现状的漂泊者却宣称外面有更好的世界在等着大家,并鼓动村民跟随前往.但守旧老人的威严和律法的神圣压制了村民的躁动,漂泊者也被处死.一天灾难降临山谷.尽管守旧老人依然试图维护经受村民的求生欲望挑战的律法.但暴动还是发生,老人们被击败,新的道路和新的生活被村民找到.怀着感恩之心,后人把以前的漂泊者奉为先知,尽管他早已尸骨无存. -- 房龙<宽容•序言> ■ 宽容 – W3C 的

ASP编程入门进阶

编程 ASP编程入门进阶(一):安装服务器 鉴于ASP脚本语言是在服务器端IIS或PWS中解释和运行,并可动态生成普通的HTML网页,然后再传送到客户端供浏览的这一特点.我们要在本机上进行调试,那就要求我们的个人电脑具有服务器的功能. 不要看到"服务器"三个字就感到担心:我的机子配置这么底,性能这么差,是不是不能配啊.放心!配个服务器,就是多装个软件,况且就自己一个人用,根本没有必要多虑.那具体的装个什么软件呢?刚才我们也看到了是在"IIS或PWS中解释和运行",很

COM编程入门:深入COM服务器

本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口. 继上一篇COM编程入门之后,本文将讨论有关COM服务器的内容,解释编写自己的COM接口和COM服务器所需要的步骤和知识,以及详细讨论当COM库对COM服务器进行调用时,COM服务器运行的内部机制. 如果你读过上一篇文章.应该很熟悉COM客户端是怎么会事了.本文将讨论COM的另一端--COM服务器.内容包括如何用C++编写一个简单的不涉及类库的COM服务器.深入到创建COM服务器的内部过程,毫无遮掩地研

VC++的Unicode编程

一.什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范.每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H-FFH).其实,英文字符并没有那么多,一般只用前128个(00H-7FH,最高位为0),其中包括了控制字符.数字.大小写字母和其它一些符号.而最高位为1的另128个字符(80H-FFH)被称为"扩展ASCII",一般用来存放英文的制表符.部分音标字符等等的一些其它符号. 这种字符编码规则显然用来处理英文没有什

ASP.NET编程入门解析

安装运行.NET需要的软件 我这里推荐一本书:<beginning asp.net 1.1with vb.net 2003>就是<asp.net 1.1入门经典--vb.net2003编程篇>这本书讲的很不错,适合初学者. 个人基础:asp基本掌握,c++基本掌握: 电脑配置:6.5G硬盘+128M内存,其他设备都是类似的配置+windows2000: 软件要求吧: 1.MDAC 2.7(微软数据库引擎)大约5.01M: 2.Microsoft.NET framework1.1大约