关于solaris下iconv_open, iconv, iconv_close函数的运用
问题:我用下面的这段测试保存成main.cpp, 然后用CC -o main.exe main.cpp /usr/lib/libiconv.so
进行编译,链接生成main.exe执行文件,运行之,发现调用iconv_open返回-1, 不知何故,请高手赐教!
注:我用的是solaris自带的库 /usr/lib/libiconv.so, 不知道跟这个有没有什么关系?
还有我用命令:iconv -f "gb2312" -t "ucs-2"进行测试, 提示说:Not suported gb2312 to ucs-2
请问怎样才能支持这样转换?
另外, 我怎么才能知道我们的系统支持那些转换?
测试代码:
int main()
{
int ret = EXIT_FAILURE;
iconv_t cd = ( iconv_t )-1;
char in[] = "GB2312与Unicode双向转换测试";
size_t inlen = sizeof( in );
char *inp = in;
char out;
size_t outlen= sizeof( out );
char *outp = out;
if ( ( iconv_t )-1 == ( cd = iconv_open( "UCS-2", "GB2312" ) ) ) {
std::cout << "ErrorCode: " << errno << std::endl;
std::cerr << "cann't execute iconv_open!" << std::endl;
return -1;
}
std::cout << "Handle: " << cd << std::endl;
if ( -1 == iconv( cd, (const char**)&inp, &inlen, &outp, &outlen ) ) {
std::cerr << "cann't execute iconv!" << std::endl;
return -1;
}
return 0;
} 没有人做过这个吗 solaris自带的库 /usr/lib/libiconv.so没用过,但据说是不支持GB2312
用Freeware For Solaris上下载的 libiconv-1.8支持GB2312 solaris下无法直接进行转换,之间要通过UTF-8中转 不支持直接转换,需要通过UTF8中转。
页:
[1]