linux下使用iconv库来将中文字符转换成utf8

linux下使用iconv库来将中文字符转换成utf8

#include <iconv.h>

#include <string>
std::string GBKToUtf8(const std::string& gbkStr)
{
    iconv_t cd = iconv_open("UTF-8", "GBK");
    if (cd == (iconv_t)-1) 
    {
        LOG_ERROR("iconv_open fail");
        return "";
    }

    std::string outStr(gbkStr.size() * 4,0);
    size_t inBytesLeft = gbkStr.size();
    size_t outByteLeft = outStr.size();

    char* inBuf = (char*)gbkStr.c_str();
    char* outBuf = (char*)outStr.c_str();

    /*
    cd:由 iconv_open() 返回的转换描述符,它指定了源编码和目标编码。
    inbuf:指向输入数据的指针的指针。在调用 iconv() 之前,这个指针应该指向要转换的数据的起始位置。在函数调用后,它将被更新为指向尚未转换的数据的下一个位置。
    inbytesleft:指向一个 size_t 变量的指针,该变量表示 inbuf 中剩余的字节数。在调用 iconv() 之前,这应该设置为输入数据的总字节数。函数调用后,它将被更新为剩余未转换的字节数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值