C/C++中,GB2312转Unicode
嵌入到多个系统编程时常常出现编码问题,特别是中文,并且对于国标GB2312来说,不像UTF-8那样可以用算法直接转为unicode(传说是这么说的,我也没试过),所以GB到Unicode只能是一对一的转换。
以前碰到过GB转为Unicode的难题,在网上找到了源码,我只是修改了一下查找的代码,将查找算法改为二分查找。
主要函数为:
unsigned int gb_uni(unsigned int gb_idx); // 传入一个汉字所对应的gb2312编码,返回该汉字的Unicode编码
GB编码简单分析:
比如“我”字的gb编码为0xCED2,unicode编码为0x6211,那么0x6211==gb_uni(0xCED2),在windows的文档里面,小于0x0a1,都是ansii编码,GB2312中每个汉字用双字节标识,比如“我”字,gb码为上位编码为0xFFFFFF62和下位编码为0xFFFFFF11,组合后为0x6211,所以一般分析中英文档,逐个字符判断,小于0x0a1则为ansii,大于,则为汉字的开始,需要预读取下一个字符来合成一个汉字的编码。
源代码
在这里(点击超链接即可):
在vim下
输入:set fdm=marker,查看会比较舒服
C/C++ GB2312转为Unicode的源码
相关文档:
常见问题:
编译失败,报错如下“无法解析的外部符号 _WSACleanup@0”等。
原因是没有引用winsock.h所在的库--Ws2_32.lib。
这时只要添加一行代码
#pragma comment( lib, "Ws2_32.lib")
即可。 ......
原文:http://hi.baidu.com/magicdemon/blog/item/821b2e22d7df494cad34debd.html
C++下基本类型所占位数和取值范围:
符号属性 长度属性 基本型 所占位数 取值范围 输入符举例&n ......
C++内置对布尔类型的支持,其关键字是bool,C语言直到C99标准才增加了对布尔类型的支持,关键字为_Bool,因为bool已经被C++用了,所以选了这个十分奇怪的关键字。在这之前C程序员对布尔类型的模拟是相当混乱的。为了在C和C++程序中以统一的方式使用布尔类型,同时提高可移植性,可以采用下面的方式:
构造一个stdbool.h头文 ......
C/C++头文件一览 收藏
C/C++头文件一览
C、传统 C++
#include <assert.h> //设定插入点
#include <ctype.h> //字符处理
#include <errno.h> //定义错误码
#include <float.h> //浮点数处理
#include <fstream.h> //文件输入/输出
#i ......
下载源代码
Python简介
Python是一种简单易学,功能强大的解释型编程语言,它有简洁明了的语法,高效率的高层数据结构,能够简单而有效地实现面向对象编程,特别适用于快速应用程序开发,也可以用来开发大规模的重要的商业应用。Python是一个理想的脚本语言。
Python免费开源,可移植到多种操作系统,只要避免使 ......