GBK到UTF8编码转换的C++实现

原创 2013年12月02日 22:20:50
std::string GBKToUTF8(const std::string& strGBK)
{
	WCHAR * str1;
	int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);
	str1 = new WCHAR[n];
	MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n);
	n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);
	char * str2 = new char[n];
	WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL);
	std::string strOutUTF8;
	strOutUTF8.assign(str2,n);
	delete[]str1;
	str1 = NULL;
	delete[]str2;
	str2 = NULL;
	return strOutUTF8;
}

std::string UTF8ToGBK(const std::string& strUTF8)
{
	int len = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);
	WCHAR* wszGBK = new WCHAR[len + 1];
	memset(wszGBK, 0, len * 2 + 2);
	MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUTF8.c_str(), -1, wszGBK, len);

	len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
	char *szGBK = new char[len + 1];
	memset(szGBK, 0, len + 1);
	WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGBK, len, NULL, NULL);
	//strUTF8 = szGBK;
	std::string strTemp;
	strTemp.assign(szGBK,len);
	delete[]szGBK;
	delete[]wszGBK;
	return strTemp;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android NDK的C/C++代码中利用JNI回调实现字符编码转换的试验(中文UTF8与GBK)

在NDK下做网络传输时,遇到一个编码转换的问题,就是对方传过来的文件名是中文GBK编码,需要转成UTF8来处理。 平常在C/C++环境下编程时,系统都会提供字符编码转换的API。如Windows下有M...
  • huzgd
  • huzgd
  • 2011年02月14日 00:17
  • 8443

Android NDK的C/C++代码中利用JNI回调实现字符编码转换的试验(中文UTF8与GBK)

原文地址::http://blog.csdn.net/huzgd/archive/2011/02/14/6183109.aspx   CSDN相关网贴   1。Android ndk开发,cy...

Android NDK的C/C++代码中利用JNI回调实现字符编码转换的试验(中文UTF8与GBK)

在NDK下做网络传输时,遇到一个编码转换的问题,就是对方传过来的文件名是中文GBK编码,需要转成UTF8来处理。   平常在C/C++环境下编程时,系统都会提供字符编码转换的API。如Wi...
  • educast
  • educast
  • 2013年10月20日 10:20
  • 1447

不依赖任何系统API,用c语言实现gbk/utf8/unicode编码转换

汉字'我' Unicode编码是 0x6211       01100010 00010001 UTF8编码是    0xe68891    11100110 10001000 100010001 ...

GBK与UTF8编码转换的QT4源码

  • 2012年03月01日 23:08
  • 186KB
  • 下载

Qt4.8编码转换之GBK2UTF8

Qt4.8编码转换之GBK2UTF8在项目中难免遇到编码转换的问题,一般我的开发项目中,代码的编码格式都是GBK,但是在其他平台上可能用的编码方式为UTF8,这时候编码转化就成为一个问题了。在之前的开...

GBK-UTF8编码转换工具

  • 2011年03月11日 00:19
  • 129KB
  • 下载

UTF8和gbk编码转换(一)

在项目中,经常遇到将gbk编码与utf8编码进行转换的情况。如在linux系统中对windows下文件进行操作,或是windows下对Linux文件操作。这是因为在Windows下的默认字符编码格式是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GBK到UTF8编码转换的C++实现
举报原因:
原因补充:

(最多只允许输入30个字)