utf8与gbk字符之间的转换主要用到两个方法

WideCharToMultiByte:http://baike.baidu.com/view/2083430.htm?fr=aladdin

MultiByteToWideChar:http://baike.baidu.com/view/1907282.htm?fr=aladdin

使用这两个方法就可以成功转换。

将GBK转换成UTF8

std::string GBKtoUTF8(const std::string& str)
{
    std::string strout = "";
    WCHAR * strGBK;
    int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);
    strGBK = new WCHAR[len];
    MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, strGBK, len);

len = WideCharToMultiByte(CP_UTF8, 0, strGBK, -1, NULL, 0, NULL, NULL);
    char * strUTF8 = new char[len];
    WideCharToMultiByte(CP_UTF8, 0, strGBK, -1, strUTF8, len, NULL, NULL);

//memcpy(str, strUTF8, strlen(strUTF8));

strout = strUTF8;

delete[] strGBK;
    strGBK = NULL;
    delete[] strUTF8;
    strUTF8 = NULL;

return strout;
}
将UTF8转换成GBK

std::string UTF8toGBK(const std::string& strint)
{
    std::string strout = "";
    int len = MultiByteToWideChar(CP_UTF8, 0, strint.c_str(), -1, NULL, 0);
    unsigned short * wszGBK = new unsigned short[len + 1];
    memset(wszGBK, 0, len * 2 + 2);
    MultiByteToWideChar(CP_UTF8, 0, strint.c_str(), -1, (LPWSTR)wszGBK, len);

len = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, NULL, 0, NULL, NULL);
    char *szGBK = new char[len + 1];
    memset(szGBK, 0, len + 1);
    WideCharToMultiByte(CP_ACP,0, (LPWSTR)wszGBK, -1, szGBK, len, NULL, NULL);
    //strUTF8 = szGBK;
    //memcpy(strout, szGBK, strlen(szGBK));

strout = szGBK;

delete[]szGBK;
    delete[]wszGBK;

return strout;
}

UTF8与GBK字符编码转换相关推荐

  1. UTF8与GBK字符编码之间的相互转换

    UTF8与GBK字符编码之间的相互转换   C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值.&qu ...

  2. Android字符编码转换,GBK转UTF-8

    Android字符编码转换,GBK转UTF-8 网上看了很多都不能用,最后看到这个方法,很靠谱,分享给大家! String str; str = new String(str.getBytes(&qu ...

  3. Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值

    文章目录 前言 简述 ASCII GBK Unicode UTF-8 应用场景 开发环境 编码转换 16进制数值转换为16进制字符 16进制数值转化为字符串 16进制字符串转换为Unicode字符串 ...

  4. android 使用icon进行字符编码转换

    在使用ndk开发应用程序时,有时需要字符编码转换,这里使用开源库icon进行字符编码转换,代码如下 char * convertString(const char * fromCode, const ...

  5. iconv 判断字符编码_iconv字符编码转换全攻略

    iconv(http://www.gnu.org/software/libiconv/)是一个开源的字符编码转换库,可以"方便"的完成几乎所有的编码转换工作.说简单是因为,它常用的 ...

  6. c语言使用iconv函数实现字符编码转换

    c语言使用iconv函数实现字符编码转换 linux下提供了iconv库来实现字符编码转换,先介绍下命令行: iconv [-f encoding] [-t encoding] [inputfile ...

  7. 《MySQL tips:隐式类型转换与隐式字符编码转换对查询效率的影响》

    维护一个交易系统,交易记录表tradelog包含交易流水号(tradeid).交易员id(operator).交易时间(t_modified)等字段. create table 'tradelog' ...

  8. UTF-8到Unicode的编码转换

    开发者在线 Builder.com.cn 更新时间:2008-03-25作者:happykevins 来源:CSDN 本文关键词: 编码转换 unicode UTF-8 游戏 UTF-8就是Unico ...

  9. 字符编码转换类(支持多国语言)

    头文件StrConvertor.h /* * 字符编码转换库,支持多国语言. */ #pragma once #include <string>class CStrConvertor { ...

最新文章

  1. Matlab图像复原(运动模糊、散焦模糊)
  2. MyBatis的入门知识
  3. 计算机itunes无法安装,手把手给你细说win7系统电脑无法安装itunes的解决方案
  4. 构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型
  5. matlab sobel锐化,sobel锐化 - yirui wu.ppt
  6. 290家公司都在用的任务调度系统,还在Github上开源了
  7. #define c# 报错_c语言中#define的用法
  8. NoteBurner Spotify Music Converter mac - 音乐转换器
  9. Web前端实现锁屏/解锁功能
  10. 菜鸟玩状态机之样式表解析
  11. LTO磁带机清洁准则
  12. 项目研发过程中甲方要增加合同外的需求,项目经理该如何处理?
  13. 如何查找计算机主机地址,ip地址查询 怎么查询电脑IP地址?
  14. android 圆形图片,(Android)处理图片成圆形
  15. curl做IP代理刷百度广告的计费问题
  16. Linux——MySQL-MMM
  17. 【常见错误】浏览器显示网络没有连接:远程计算机或设备将不受连接,解决办法
  18. 电脑一些很经典的技巧
  19. ffmpeg播放器(一) 视频解码与播放
  20. 扬州美女能否走出传说产生经济价值?

热门文章

  1. 14张Python基础知识点总结思维导图配搭一份视频教程还不能入门?
  2. 计算机excel表格公式教程,Excel2010
  3. 弱一致性、CAP、BASE与NoSQL
  4. wtc java 代码 tpcall(servicename_wtc经验心得以及相关代码
  5. Python实现问卷星调查问卷自动填写
  6. mysql innodb文件存储_MySQL数据库和InnoDB存储引擎文件
  7. Python调用xbox手柄马达震动
  8. C语言小型商品管理系统
  9. python人机猜拳_python实现人机猜拳小游戏
  10. STA series --- 6 .Crosstalk and Noise