读书人

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

发布时间: 2013-10-04 21:41:43 作者: rapoo

关于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了
[解决办法]
接分了

读书人网 >C++

热点推荐