2019独角兽企业重金招聘Python工程师标准>>>

//GB to utf-8
void udmsEntrance::GB2312ToUTF_8(string& pOut,const char *pText, int pLen) { 
char buf[4]; 
memset(buf,0,4); 
pOut.clear(); 
int i = 0; 
while(i < pLen) { 
//copy directly if it is a english char
if( pText[i] >= 0){ 
char asciistr[2]={0}; 
asciistr[0] = (pText[i++]); 
pOut.append(asciistr); 
}else { 
WCHAR pbuffer; 
Gb2312ToUnicode(&pbuffer,pText+i); 
UnicodeToUTF_8(buf,&pbuffer); 
pOut.append(buf); 
i += 2; 


return; 
}

void udmsEntrance::Gb2312ToUnicode(WCHAR* pOut,const char *gbBuffer){ 
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,gbBuffer,2,pOut,1); 
return; 
}

void udmsEntrance::UnicodeToUTF_8(char* pOut,WCHAR* pText){ 
char* pchar = (char *)pText; 
pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4)); 
pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) + ((pchar[0] & 0xC0) >> 6); 
pOut[2] = (0x80 | (pchar[0] & 0x3F)); 
return; 

void udmsEntrance::UTF_8ToGB2312(string &pOut, const char *pText, int pLen){ 
char buf[4]; 
char* rst = new char[pLen + (pLen >> 2) + 2]; 
memset(buf,0,4); 
memset(rst,0,pLen + (pLen >> 2) + 2); 
int i =0; 
int j = 0; 
while(i < pLen){ 
if(*(pText + i) >= 0){ 
rst[j++] = pText[i++]; 
}else{ 
WCHAR Wtemp; 
UTF_8ToUnicode(&Wtemp,pText + i); 
UnicodeToGB2312(buf,Wtemp); 
unsigned short int tmp = 0; 
tmp = rst[j] = buf[0]; 
tmp = rst[j+1] = buf[1]; 
tmp = rst[j+2] = buf[2]; 
i += 3; 
j += 2; 


rst[j]='\0'; 
pOut = rst; 
delete []rst; 
}

void udmsEntrance::UTF_8ToUnicode(WCHAR* pOut,const char *pText) { 
char* uchar = (char *)pOut; 
uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F); 
uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F); 
return; 
}

void udmsEntrance::UnicodeToGB2312(char* pOut,WCHAR uData){ 
WideCharToMultiByte(CP_ACP,NULL,&uData,1,pOut,sizeof(WCHAR),NULL,NULL); 
return;

}

转载于:https://my.oschina.net/liangxiao/blog/118182

C++中文转码问题(GB2312 - UTF8)相关推荐

  1. VC中三种常见中文内码的转换方法(GB2312/GBK/BIG5)

    我们平时常见的三种中文内码是:GB2312(简体中文).GBK.BIG5(繁体中文).网上有很多中文内码的专用转换工具.我们碰到由于内码不一致而导致的乱麻问题,用这些工具可以进行相互转换.但论坛里经常 ...

  2. 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  3. GB2312 UTF8 UCS2汉字编码对应表

    最近老是遇到遇到中文编码转换的问题,但是又不是所有的环境都提供编码转换的工具.所以不如自己把整个汉字编码库搞下来,再逐个查询. window的默认编码是GBK,GBK向下兼容GB2312 GBK:双字 ...

  4. php生成pdf中文断码_PHP生成PDF完美支持中文,解决TCPDF乱码

    //生成pdf最近会用到,找到一些资料,非原创 PHP生成PDF格式文件以TCPDF为基础,TCPDF是一个用于快速生成PDF文件的PHP5函数包.TCPDF基于FPDF进行扩展和改进.支持UTF-8 ...

  5. 利用华为短信包开发短信功能中中文转码和msgId获取经验

    1.华为短信包smproxy(20040730).jar开发短信,上行短信中文转码 中文转码非我们预期的UTF-8.GBK.GB2312,而是UTF-16BE if(8==msg_fmt){      ...

  6. 转载 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030

    转自: http://www.blog.edu.cn/user3/flyingcs/archives/2006/1418577.shtml 概要:UTF-8的一个特别的好处是它与ISO- 8859-1 ...

  7. 计算机ucs汉字编码,字符编码基础知识 - Unicode,UCS,GBK,GB2312,UTF-8

    字符编码基础知识- Unicode,UCS,GBK,GB2312,UTF-8 最近遇到一个Unicode和UTF-8关系比较的问题,之前在处理中文显示时也遇到过类似的问题,于是花时间学习了一下,在此做 ...

  8. 用C语言实现常见的三种中文内码转换

    常见的中文内码一般有GB2312(简体中文),GBK和台湾那边用的BIG5(繁体中文),有时候看一些台湾编程论坛里的资料,都是乱码,如果在IE中浏览,则要求安装繁体字库的支持.网上也有很多中文内码的转 ...

  9. c语言字符的内码是怎么表示,用C语言实现常见的三种中文内码转换

    常见的中文内码一般有GB2312(简体中文),GBK和台湾那边用的BIG5(繁体中文),有时候看一些台湾编程论坛里的资料,都是乱码,如果在IE中浏览,则要求安装繁体字库的支持.网上也有很多中文内码的转 ...

  10. 三种常见中文内码的转换方法

    我们平时常见的三种中文内码是:GB2312(简体中文).GBK.BIG5(繁体中文).网上有很多中文内码的专用转换工具.我们碰到由于内码不一致而导致的乱麻问题,用这些工具可以进行相互转换.但论坛里经常 ...

最新文章

  1. Spring 泛型依赖注入
  2. 英特尔更新人工智能产品线,新品性能达到竞品6倍
  3. H.264编解码流程
  4. Android之自定义ViewGroup
  5. Python 两种装饰器
  6. 把代码写成艺术,真正体会面向对象编程思想
  7. 推荐系统中的context到底指的是什么?
  8. MATLAB线性规划整数变量,Matlab 整数线性规划问题模型代码
  9. 为什么手机显示itunes store无法连接服务器,iPad无法连接到iTunes Store怎么办?教你几招...
  10. 1000多块整个插板,arduino + android 蓝牙插板的实现--屌丝版
  11. ST_Geometry
  12. 目标检测训练数据扩充增强工具使用说明
  13. x264中码率控制(三)rate_estimate_qscale函数
  14. tinymce6.0+ 插件按钮翻译
  15. 图算法在转转推荐算法召回及粗排的实践
  16. SSH酒店点菜系统笔记
  17. Simulink仿真代码之step()函数的使用
  18. Django教程 —— Django模板
  19. C++ 雷霆战机 附完整源码
  20. S2-057,S2-059,s2-061,s2-062漏洞复现

热门文章

  1. 服务器不显示磁盘柜,磁盘柜与服务器的关系
  2. 固件分析工具Binwalk
  3. iOS 9应用开发教程之ios9中实现按钮的响应
  4. layui数据表格自定义复选框表头_解决LayUI数据表格复选框不居中显示的问题
  5. 腾讯微博qq说说备份导出工具_10年了!腾讯微博宣布关停,宜昌90后的青春不再!...
  6. ajax返回一直进入error_解决ajax返回验证的时候总是弹出error错误的方法
  7. [unreal4入门系列之四] 熟悉虚幻4项目浏览器界面
  8. 不管马斯克怎么说,中国智能汽车激光雷达军备竞赛已经开始
  9. 特斯拉纯视觉FSD版本Bug频发!马斯克:不认真测试的车主就取消资格
  10. 全球顶级语音技术比赛中获双料冠军,这家中国公司靠什么?