用C/C++写一个字符串GBK转UTF-8编码的函数,并写main函数测试(在线等)

来源:百度知道 编辑:UC知道 时间:2024/07/05 20:47:10
用C/C++写一个字符串GBK转UTF-8编码的函数,并写main函数测试(在线等)
能不能帮我调试正确 谢谢

VC6下编译通过, 转化后的文本文档在C盘目录下,你打开后点"文件"-> "另存为",可看到编码类型为"UTF-8",说明转换成功了。还有什么不懂的再问我好了。多给我加分哦!呵呵

#include <stdio.h>
#include <windows.h>

//GBK编码转换到UTF8编码
int GBKToUTF8(unsigned char * lpGBKStr,unsigned char * lpUTF8Str,int nUTF8StrLen)
{
wchar_t * lpUnicodeStr = NULL;
int nRetLen = 0;

if(!lpGBKStr) //如果GBK字符串为NULL则出错退出
return 0;

nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char *)lpGBKStr,-1,NULL,NULL); //获取转换到Unicode编码后所需要的字符空间长度
lpUnicodeStr = new WCHAR[nRetLen + 1]; //为Unicode字符串空间
nRetLen = ::MultiByteToWideChar(CP_ACP,0,(char *)lpGBKStr,-1,lpUnicodeStr,nRetLen); //转换到Unicode编码
if(!nRetLen) //转换失败则出错退出
return 0;

nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,NULL,0,NULL,NULL); //获取转换到UTF8编码后所需要的字符空间长度

if(!lpUTF8Str) //输出缓冲区为空则返回转换后需要的空间大小
{