iconv gbk字符转utf8字符

直接上代码

bool gbk2utf8(const char* src, char* dest, size_t inlen)
{
    const char *inbuf = src;
    size_t outlen = inlen * 4;
    char *outbuf = dest;
    memset(outbuf, 0, outlen);
    iconv_t cd = iconv_open("UTF-8", "GBK");
    /* iconv接口会改变inbuf和outbuf,所以不能直接使用src和dest */
    size_t res = iconv(cd, &inbuf, &inlen, &outbuf, &outlen);
    iconv_close(cd);
    return (0 == res) ? true : false;
}

示例:

    boost::shared_array<char> ptr_iType(new char[ilen * 4]);
    gbk2utf8(XML_ITYPE_DESC, ptr_iType.get(), ilen);

此处使用了boost的智能指针,减少内存泄漏的可能。

时间: 2024-11-10 07:40:38

iconv gbk字符转utf8字符的相关文章

c程序实现unicode字符转utf-8字符

下面是一个unicode字符转换为utf-8的c程序实现: /* * ===================================================================================== * * Filename: utou.c * * Description: * * Version: 1.0 * Created: 08/06/2015 10:53:31 AM * Revision: none * Compiler: gcc * * Aut

UTF-8、GBK、GBK2312等字符编码的区别和vim乱码等相关问题研究。

转自本人博客:xge技术博客 http://www.xgezhang.com/char_encodind_vim.html 关于字符编码的问题在做项目的时候经常都会出现,但一直没有很系统的研究过,今天早上系统的看了几篇文章.在此整理分享以下. 三种编码方式的简介: gb2312(又称为GB 2312-80)编码是一个简体中文字符集的中国国家标准,全称为<信息交换用汉字编码字符集·基本集>,又称为GB0,由中国国家标准总局发布,1981年5月1日实施.GB2312编码适用于汉字处理.汉字通信等系

javac编译错误: 编码UTF8/GBK的不可映射字符

Linux下为UTF-8编码,javac编译gbk编码的java文件时,容易出现“错误: 编码UTF8的不可映射字符” 解决方法是添加encoding 参数:javac -encoding gbk WordCount.java Windows下为GBK编码,javac编译utf-8编码的java文件时,容易出现“错误: 编码GBK的不可映射字符” 解决方法是添加encoding 参数:javac -encoding utf-8 WordCount.java 如果还不能解决,将其保存成ANSI编码

ASCII,Unicode,GBK和UTF-8字符编码的区别联系

ASCII,Unicode,GBK和UTF-8字符编码的区别联系 wyrssktzc11级分类:其他被浏览86次2016.05.27 检举 KingSta逍遥 采纳率:45%7级2016.05.27 ASCII.Unicode.GBK和UTF-8字符编码的区别联系 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节".再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出

ASCII,Unicode,GBK和UTF-8字符编码的区别和联系

如果经常写python2,肯定会遇到各种"奇怪"的字符编码问题,每次都通过谷歌解决了,但是为什么会造成这种乱码.decode/encode失败等等,本文就字符和字符编码做一个总结,更加清晰区分诸多的编码. 字符集 一个系统支持的所有抽象字符的集合.字符是文字和符号的总称,包含各个国家文字.标点符号.图像符号.数字等.它为每一个字符分配一个唯一的ID,一般称之为码位.码点. 字符编码 它是一套规则,使用该规则能够将自然语言的字符的一个集合与其他东西的一个集合进行配对,在符号集合和数字系统

windows下cmd命令行显示UTF8字符设置(CHCP命令)

在中文windows系统中,如果一个文本文件是utf-8编码的,那么在cmd.exe命令行窗口(所谓的dos窗口)中不能正确显示文件中的内容.在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集. 如果想正确显示UTF-8字符,可以按照以下步骤操作: 1.打开CMD.exe命令行窗口 2.通过 chcp命令改变代码页,UTF-8的代码页为65001 1 chcp 65001 执行该操作后,代码页就被变成UTF-8了.但是,在窗口中仍旧不能正确显示UTF-8字符

java编码GBK的不可映射字符

编译java文件时,提示编码GBK的不可映射字符. 主要原因:windows 默认编码方式为GBK,用javac编译时,中文按照GBK解析,但是文件内容编码格式不是GBK. 解决:若编译单个文件指定编码格式就可以了 javac -encoding UTF-8 TestBinaryNum.java

javac编译 编码GBK的不可映射字符

使用命令行javac命令编译java文件, 提示错误:编码GBK的不可映射字符. 在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe会获得我们操作系统默认采用的编码格式. JDK根据操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),把源程序从默认编码格式转化为JDK内部默认的UNICODE格式放入内存中.然后把转换后的unicode格式的文件进行编译成.class类文件,此时.cl

使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法 ——转载

一.问题描述 今天在MyEclipse中使用Maven编译项目源代码时,结果如下了如下的错误 百思不得其解啊,java源代码在MyEclipse中显示是没有任何错误的,可是执行"maven install"命令编译项目时就会出现上述的错误,导致项目编译失败.这个问题还是第一次遇到,还好在这里http://capslk.iteye.com/blog/1419958看到了解决问题的办法. 二.解决办法 解决这个问题的思路: 在maven的编译插件中声明正确的字符集编码编码——编译使用的字符