首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于iconv参数的一个有关问题

2013-10-04 
关于iconv参数的一个问题。如下代码可以成功将GB2312转换为UTF-8:#include iostream#include iconv.h#i

关于iconv参数的一个问题。
如下代码可以成功将GB2312转换为UTF-8:
#include <iostream>
#include <iconv.h>
#include <string.h>
#include <stdio.h>

using namespace std;

int main() {
    cout<<"Hello World!"<<endl;

    char gb2312[5] = {0xB0, 0xA1, 0xB0, 0xA1, '\0'};
    cout << "GB2312: " << gb2312 << endl;

    iconv_t cd;
    cd = iconv_open("UTF-8", "GB2312");
    cout << "cd: " << cd << endl;

    char utf8[20];
    size_t in = 5;
    size_t out = 20;

    //now we make char**,why?
    char* GB2312 = gb2312;
    char* UTF8 = utf8;

    size_t convNum = iconv(cd, &GB2312, &in, &UTF8, &out);
    perror("call iconv:");
    
    iconv_close(cd);

    cout << "in: " << in << endl;
    cout << "out: " << out << endl;
    cout << "convNum: " << convNum << endl;
    cout << "UTF-8: " << utf8 << endl;
    cout << "length: " << strlen(UTF8) << endl;

    return 0;
}

但是如果这样调用iconv的话就会出现Segmentation fault,请问这是为什么?
size_t convNum = iconv(cd, (char**)&gb2312, &in, (char**)&utf8, &out);
[解决办法]

我以为你只有一个utf8呢
原来你段错误的时候 换成小写的utf8了
[解决办法]
接分了

热点排行