当前位置:  技术问答>linux和unix

为何iconv转换不成功呢?

    来源: 互联网  发布时间:2016-01-27

    本文导语:  下面的程序从GB2312转换到UTF-8. ibuf里面存放的是"品"的GB2312编码, obuf里面存放将要转换的UTF-8编码,但最后obuf里面内容不正确, 不知道问题出在什么地方? 请指点一下! #include "stdio.h" #include "unistd.h" #include "fcntl.h" #inclu...

下面的程序从GB2312转换到UTF-8. ibuf里面存放的是"品"的GB2312编码,
obuf里面存放将要转换的UTF-8编码,但最后obuf里面内容不正确,
不知道问题出在什么地方? 请指点一下!

#include "stdio.h"
#include "unistd.h"
#include "fcntl.h"
#include "iconv.h"
#include "string.h"
#define BUFLEN 20

int main()
{
iconv_t cd;
char obuf[BUFLEN];
char* pobuf = obuf;
char ibuf[BUFLEN] = {0xc6, 0xb7, 0x00};
char* pibuf = ibuf;

size_t ilen,olen,ret;

const char* from_code = "gb2312";
const char* to_code = "utf-8";

ilen = strlen(ibuf);
olen = BUFLEN;
printf("n");

if ((cd=iconv_open(to_code, from_code)) == (iconv_t)-1)
{
printf("failed to conv GB2312 to UTF-8n");
exit(-1);
}

if (iconv(cd, &pibuf, &ilen, &pobuf, &olen) == (size_t)-1)
{
printf("failed to conv bufn");
exit(-1);
}

printf("pobuf = %sn", pobuf);
printf("pobuf[0] = %x, pobuf[1] = %x, pobuf[2] = %xn", pobuf[0], pobuf[1], pobuf[2]);

iconv_close(cd);

return 0;
}







|
源代码在这里:http://code.google.com/p/libkf701/  一起写来吧

#include 
#include 
#include 
#include 
#include 
#include 

#ifndef SIZE_MAX
# define SIZE_MAX ((size_t) -1)
#endif

/**
 * @brief codeset convert
 *
 * Convert a zero-terminated string STR from the FROM_CODSET code set
 * to the TO_CODESET code set.  The returned string is allocated using
 * malloc, and must be dellocated by the caller using free.  On
 * failure, NULL is returned and errno holds the error reason.  Note
 * that if TO_CODESET uses 0 for anything but to terminate the
 * string, the caller of this function may have difficulties finding
 * out the length of the output string.
 *
 * @param str  raw buffer need convert
 * @param from_codeset such as "gbk"
 * @param to_codeset such as "utf-8"
 *
 * @return the converted buffer or NULL when faild
 * you must free the retval buffer yourself
 *
 */
char *iconv_string (const char *str, const char *from_codeset,
                const char *to_codeset)
{
        char *dest = NULL;
        iconv_t cd;
        char *outp;
        char *p = (char *) str;
        size_t inbytes_remaining = strlen (p);
        /* Guess the maximum length the output string can have.  */
        size_t outbuf_size = inbytes_remaining + 1;
        size_t outbytes_remaining;
        size_t err;
        int have_error = 0;

        /* Use a worst-case output size guess, so long as that wouldn't be
           too large for comfort.  It's OK if the guess is wrong so long as
           it's nonzero.  */
        size_t approx_sqrt_SIZE_MAX = SIZE_MAX >> (sizeof (size_t) * CHAR_BIT / 2);
        if (outbuf_size 

    
 
 

您可能感兴趣的文章:

  • 跪求解决方法 iconv 不支持 utf-8 gb2312转换 iconv -l 显示没有utf-8 gb2312
  • php iconv函数解决utf-8与gb2312编码转换问题
  • 关于用iconv函数作编码转换的问题
  • iconv可以用来转换文字编码,有没有可以用来识别编码的?
  • 如何用 iconv_open,iconv,iconv_close 在 Unicode 跟 GB2312 之间转换?
  • 请教,在64位机AIX系统,使用iconv()函数转换UTF-8到GBK失败,是什么原因呢?如何解决?
  • php编码转换函数(iconv mb_convert_encoding)
  • linux下iconv无法实现字符集的转换
  • 请问:linux下C/C++编程,怎样把含有中英文及数字其他字符的字符串,转化成utf-8编码,又怎样将其转换回来。iconv好像不支持混合?
  • 字符集转换(iconv)出错求教
  • 急急!!iconv转换问题
  • php字符编码转换问题 mb_convert_encoding与iconv函数
  • php编码转换函数mb_convert_encoding与iconv
  • iconv函数进行字符集转换
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • LINUX下的ICONV无法使用
  • iconv是不是有bug?
  • iconv.h 问题
  • iconv的问题
  • 求iconv批处理脚本
  • iconv命令处理固定文件夹下的所有文件
  • 使用iconv批量改变文件编码的shell脚本
  • libxml2 编译程序 ERROR: Undefined symbol: .iconv_open
  • php iconv函数用法示例与注意事项
  • FreeBSD+php4.4+apache2的iconv的问题...........
  • iconv从UTF8转到GB18030中文乱码问题
  • 讨厌的警告,关于iconv函数的 :passing argument 2 of ‘libiconv’ from incompatible pointer type
  • iconv 无效的参数
  • Solaris8,安装了iconv,gcc和gcclib,然后用gcc编译c程序出错。
  • [高分求救啊]jni的C++实现中,调用iconv转UTF-8到GB18030老失败
  • 请教iconv函数的用法?
  • 用iconv进行unicode编码和编码表方法的问题
  • php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
  • iconv,从UTF8到GBK(//IGNORE),失败!
  • shell脚本中使用iconv实现批量文件转码的代码分享


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3