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)

原文地址::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。如Windows下有M...
  • huzgd
  • huzgd
  • 2011-02-14 00:17
  • 8247

UTF8和gbk编码转换(一)

在项目中,经常遇到将gbk编码与utf8编码进行转换的情况。如在linux系统中对windows下文件进行操作,或是windows下对Linux文件操作。这是因为在Windows下的默认字符编码格式是...

Qt4.8编码转换之GBK2UTF8

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

GBK-UTF8编码转换工具

  • 2011-03-11 00:19
  • 129KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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