ANSI与UTF-8编码转换
来源:互联网 发布:java面试简历项目流程 编辑:程序博客网 时间:2024/06/10 07:22
将ANSI编码装换为UTF-8在windows MFC环境下测试下面的代码
static int ansi2utf8(IN const char *cSrc, OUT char *cDest)
{
assert(NULL != cSrc && NULL != cDest);
int hResult = SUCCESS;
int nBufferLen = 0;
//MultiByteToWideChar
nBufferLen = MultiByteToWideChar(CP_ACP, 0, cSrc, -1, NULL, 0);
char *cTempBuffer = (char*)malloc(strlen(cSrc) * sizeof(WCHAR));
memset(cTempBuffer, 0, nBufferLen);
nBufferLen = MultiByteToWideChar(CP_ACP, 0, cSrc, -1, (LPWSTR)cTempBuffer, nBufferLen);
//WideCharToMultiByte 切勿想当然,参数个数与前一个函数不一样
nBufferLen = WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)cTempBuffer, -1,
NULL, 0, NULL, NULL);
cDest = (char*)realloc(cDest, nBufferLen);
memset(cDest, 0, nBufferLen);
nBufferLen = WideCharToMultiByte(CP_UTF8, 0,(LPWSTR)cTempBuffer, -1,
cDest, nBufferLen, NULL, NULL);
if(0 != nBufferLen)
hResult = SUCCESS;
return hResult;
}
//以下代码将UTF-8 转换为gb2312
intutf8togb2312(const char *sourcebuf, size_t sourcelen, char *destbuf, size_tdestlen)
{
iconv_t cd;
if( (cd = iconv_open("utf-8", "gb2312")) == 0) //查看相关函数,在Linux中使用locale -a命令查看字符集,转为其他字符集只 //需要改变该参数即可
{
return -1;
}
memset(destbuf,0,destlen);
const char **source = &sourcebuf;
char **dest = &destbuf; //想清楚,此处为什么要保存原始地址?
//注意:该函数回改变指针,如source会累加,调试运行观察source指针。
if((size_t)(-1) == iconv(cd, (char **)source, &sourcelen, dest,&destlen))
{
return -1;
}
iconv_close(cd);
return 0;
}
- UTF-8与ANSI 编码转换
- ANSI与UTF-8编码转换
- UTF-8与ANSI 编码转换
- ANSI、UNICODE、UTF-8 文件编码转换
- ANSI与UTF-8编码互相转换,CString,std::string,char*,const char*互相转换
- .java文件的ANSI编码转换为UTF-8编码
- .java文件的ANSI编码转换为UTF-8编码
- 有关unicode, UTF-8, ANSI等编码转换
- Windows下字符编码转换(ANSI <--> Unicode <--> UTF-8)
- ANSI、UNICODE、UTF-8编码格式相互之间转换
- UTF-8转化ANSI编码
- 保存文档编码选择(ANSI与UTF-8)
- 关于编码ansi、GB2312、unicode与utf-8的区别
- 关于编码ansi、GB2312、unicode与utf-8的区别
- 关于编码ansi、GB2312、unicode与utf-8的区别
- 关于编码ansi、GB2312、unicode与utf-8的区别
- 关于编码ansi、GB2312、unicode与utf-8的区别
- 关于编码ansi、GB2312、unicode与utf-8的区别
- Tag vs. Type Names
- LOAD DATA INFILE句法
- ?? 运算符(C# 参考)
- LOAD DATA INFILE 语法
- 【初学设计模式】Abstract Factory (抽象工厂)
- ANSI与UTF-8编码转换
- JSP不支持EL表达式的解决方案
- NAND Flash--嵌入式NAND Flash读写技术
- ORA-12560: TNS: 协议适配器错误的解决方法
- 【初学设计模式】Builder (生成器)
- 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
- 关于MFC的一点配置
- java GUI 1:事件处理及图形操作
- 有码才有真相