[置顶] GBK编码数据转码为UTF-8格式
2017-04-06 17:20
337 查看
#include <windows.h>
#include <wchar.h>
int CFileListModel::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(C c3a5 P_UTF8,0,lpUnicodeStr,-1,NULL,0,NULL,NULL); //获取转换到UTF8编码后所需要的字符空间长度
if(!lpUTF8Str) //输出缓冲区为空则返回转换后需要的空间大小
{
if(lpUnicodeStr)
delete []lpUnicodeStr;
return nRetLen;
}
if(nUTF8StrLen < nRetLen) //如果输出缓冲区长度不够则退出
{
if(lpUnicodeStr)
delete []lpUnicodeStr;
return 0;
}
nRetLen = ::WideCharToMultiByte(CP_UTF8,0,lpUnicodeStr,-1,(char *)lpUTF8Str,nUTF8StrLen,NULL,NULL); //转换到UTF8编码
if(lpUnicodeStr)
delete []lpUnicodeStr;
return nRetLen;
}
相关文章推荐
- struts spring jdbc 编码格式从utf-8转化为gbk
- 编码和编码格式,unicode和GBK、UTF-8的关系
- 如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)
- UTF-8编码格式导致编码GBK的不可映射字符问题
- UNICODE,GBK,UTF-8:编码格式的区别
- 原CMS中用的是GB2312编码。。现在的系统用的是UTF-8,如果输出的数据不转码,IE下乱。。转则。FF下乱。。郁闷
- 用java程序将GBK字符转成UTF-8编码格式
- 如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程
- UTF-8和GBK等中文字符编码格式介绍及相互转换
- oracle编码格式从utf-8转换为GBK
- Ubuntu转换文件编码格式(gbk to utf-8 )
- UNICODE,GBK,UTF-8:编码格式的区别
- linux shell 批量更改文件编码格式 gbk到utf-8
- 编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)(转)
- 如果是GBK编码的返回该字符串的utf8编码格式 如果该字符串是UTF-8编码的直接返回
- 从IXMLDOMDocument2中获取指定编码(如UTF-8)格式的数据
- 用java程序将GBK字符转成UTF-8编码格式(转)
- 将windows下的GBK编码格式文件转化为Linux下UTF-8编码格式文件
- 『PHP』UTF8编码页面存入GBK数据时使用iconv遇到无法转码的字符时中断内容丢失及解决方法
- 编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)