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 对话框
注意这里的 UNICODE 和 _UNICODE 有什么区别呢?前者没有下划线,专门用于 Windows 头文件;后者有一个前缀下划线,专门用于 C 运行时头文件。
在代码中,凡是用关键字 char 的地方都用 TCHAR 取代;凡是用 char * 的地方都用 LPTSTR 取代;凡是定义在双引号中的字符串常量(如"VCKBASE Online Journal")都用 TEXT 宏重写:
TEXT("VCKBASE Online Journal");
TEXT 宏的主要作用是当定义了 UNICODE/_UNICODE 预处理指令时,字符串被标志为双字节字符串,否则字符串被标示为 ANSI 字符串。TEXT 的定义如下:
TEXT(
LPTSTR string // ANSI 或者 Unicode 字符串
);
参数 string 为字符串指针,指向被解释的 Unicode 或者 ANSI 字符串
在文档中 微软提供了包括通用类型在内的几种数据类型都与 ASCII 和 UNICODE兼容。这一点可以参考微软在线文档有关“通用数据类型和数据类型”的章节。
相关推荐
win32编程入门程序 包括:自定义消息 定时器 使用资源(图标,光标,菜单,对话框) 键盘消息响应 后备缓冲区 说明:需自建工作空间,并在建好之后在属性->配置属性->常规->项目默认值->字符集 选择"使用Unicode...
第1部分占据了大约三分之二的篇幅,阐释这门语言的“核心”内容,包括基本的概念和语句、语法和风格、 Python对象、数字类型、序列类型、映射和集合类型、条件和循环、文件和输入/输出、错误和异常、函数和函数式...
第2章 快速入门 2.1 程序输出,print语句及“Hello World!” 2.2 程序输入和raw_input()内建函数 2.3 注释 2.4 操作符 2.5 变量和赋值 2.6 数字 2.7 字符串 2.8 列表...
包含几个关于socket传输的说明介绍文档,里面有代码 class Server { ... string msg = Encoding.Unicode.GetString(buffer, 0, bytesRead); Console.WriteLine("Received: {0}", msg); // 按Q退出 } }
北京动力节点-Java编程零基础教程-053-Java基本语法-Unicode码.avi 北京动力节点-Java编程零基础教程-054-Java基本语法-UTF-8.avi 北京动力节点-Java编程零基础教程-055-Java基本语法-UTF-8的编码格式.avi 北京...
感觉编程语言Feel是一种专注于效率的开源编程语言。 它可以帮助您轻松构建跨平台软件。 通过精心设计的语法规则...入门快速预览Main := () { Print("Hello, world!") Greetings := Make_greetings("Fall in love with
写的时我发现,易语言根本不支持Unicode编程.也不也没有word类型真的搞不懂,这能叫中文编程 算了,不吐槽了.易语言还是很不错的中文编程,我想是开发工具对中国人来说简单入门简单 这个编辑框功能比较简单 可输入 可...
第2章 快速入门 2.1 程序输出,print语句及“hello world!” 2.2 程序输入和raw_input()内建函数 2.3 注释 2.4 操作符 2.5 变量和赋值 2.6 数字 2.7 字符串 2.8 列表...
第2章 快速入门 2.1 程序输出,print语句及“hello world!” 2.2 程序输入和raw_input()内建函数 2.3 注释 2.4 操作符 2.5 变量和赋值 2.6 数字 2.7 字符串 2.8 列表...
第1章 Windows应用程序开发入门 1 1.1 第一个实例程序 1 1.1.1 start.exe 1 1.1.2 Windows API 2 1.1.3 程序入口函数 2 1.1.4 start.c代码分析 2 1.2 编译代码 3 1.2.1 安装Visual Studio 3 1.2.2 ...
\第1章 Qt初步实践 2 \1.1 第一个Qt程序 2 \1.1.1 建立主程序 2 \1.1.2 建立工程 3 \1.1.3 编译/运行第一个Qt应用程序 8 \1.1.4 第一个Qt程序的代码分析 8 \1.2 使用Qt布局管理器 11 \1.3 关联操作 12 \1.4 小结 13 ...
第1章 Windows应用程序开发入门 1 1.1 第一个实例程序 1 1.1.1 start.exe 1 1.1.2 Windows API 2 1.1.3 程序入口函数 2 1.1.4 start.c代码分析 2 1.2 编译代码 3 1.2.1 安装Visual Studio 3 1.2.2 ...
第2章 快速入门 2.1 程序输出,1print语句及“HellocWorld!” 2.2 程序输入和raw_input()内建函数 2.3 注释 2.4 操作符 2.5 变量和赋值 2.6 数字 2.7 字符串 2.8 列表...
1. 程序和编程语言 2. 自然语言和形式语言 3. 程序的调试 4. 第一个程序 2. 常量、变量和表达式 1. 继续Hello World 2. 常量 3. 变量 4. 赋值 5. 表达式 6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义...
\第1章 Qt初步实践 2 \1.1 第一个Qt程序 2 \1.1.1 建立主程序 2 \1.1.2 建立工程 3 \1.1.3 编译/运行第一个Qt应用程序 8 \1.1.4 第一个Qt程序的代码分析 8 \1.2 使用Qt布局管理器 11 \1.3 关联操作 12 \1.4 ...
写的时我发现,易语言根本不支持Unicode编程.也不也没有word类型真的搞不懂,这能叫中文编程 算了,不吐槽了.易语言还是很不错的中文编程,我想是开发工具对中国人来说简单入门简单 这个编辑框功能比较简单 可输入 可...
Linux C 编程一站式学习..............................................1 C 语言入门..........................................................5 第 1 章 程序的基本概念.........................................