C 语言汉字写入问题及Un ico de 优势 默认分类 2009-06-13 09:22:13 阅读552 评论2 字号:大中小 订阅 常用的字符编码有以下三种: 1、ASCII 只支持英文,全部为 8 位 2、DBCS 支持英文和中文,但中文需要两个字节(16 位) 3、UNICODE 支持英文和中文,英文和中文都需要两个字节 ASCII 是 DOS 时代的,无法支持中文
DBCS 是 Win9x 支持的字符集
UNICODE 是 win2k 和 xp 支持的字符集
而汉字的编码目前有GB2312-1980 和 GB18030-2000,GB2312 就是 DBCS 类型的汉字编码,GB18030就是 UNICODE 的汉字编码,当然 GB18030 兼容 GB2312,也就是说 GB18030 也支持 DBCS 的字符处理方式
虽然 GB18030 是 2000 年后强制执行的国家标准,但目前使用最多的还是 GB2312 编码,而且GB2312 也足够处理你所用到的汉字了
还有GBK 编码是 GB2312 的增强版
这里我仅支持 GB2312
由于 GB2312 是中国大陆制定的标准,所以繁体中文并不在 GB2312 的编码中,如果你的程序需要支持繁体中文,则还需要处理 Big5 编码
其实也很简单
下面说一下在 C 中如何处理 GB2312 编码的汉字
0 为例,如果声明变量的类型为 wchar_t 则是UNICODE 编码,如果是 char 则是 DBCS 编码比如我的一个函数声明是: void Justify (HDC hdc, PTSTR pText, RECT * prc, int iAlign) 其中的pText 是 PTSTR 类型,PTSTR 在 WINNT
H 中有两个定义(WINNT
H 中的这段代码我删掉了中间无关的部分) #i