DT华英雄 发表于 2005-12-07 09:06

关于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;
}

DT华英雄 发表于 2005-12-07 13:28

没有人做过这个吗

caojiqun 发表于 2005-12-07 15:55

solaris自带的库 /usr/lib/libiconv.so没用过,但据说是不支持GB2312
用Freeware For Solaris上下载的 libiconv-1.8支持GB2312

beyond_wyc 发表于 2010-12-27 13:54

solaris下无法直接进行转换,之间要通过UTF-8中转

beyond_wyc 发表于 2010-12-27 16:41

不支持直接转换,需要通过UTF8中转。
页: [1]
查看完整版本: 关于solaris下iconv_open, iconv, iconv_close函数的运用