zoukankan      html  css  js  c++  java
  • Linux字符串编码转换

    int code_convert(char *from_charset,char *to_charset,char *inbuf,size_t inlen,char *outbuf,size_t outlen)
    {
    iconv_t cd;
    int rc;
    char **pin = &inbuf;
    char **pout = &outbuf;

    cd = iconv_open(to_charset,from_charset);
    if (cd==0) return -1;
    memset(outbuf,0,outlen);
    if (iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1;
    iconv_close(cd);
    return 0;
    }
    //UNICODE码转为GB2312码
    int u2g(char *inbuf,size_t inlen,char *outbuf,size_t outlen)
    {
    return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
    }
    //GB2312码转为UNICODE码
    int g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)
    {
    return code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);
    }

    char in_utf8[] = "adgdd3ef";
    char in_gb2312[] = "正在安装";
    char out[OUTLEN];

    //unicode码转为gb2312码
    printf("unicode-->gb2312 in=%s ", in_utf8);
    u2g(in_utf8,strlen(in_utf8),out,OUTLEN);
    out[strlen(in_utf8)] = '';
    printf("unicode-->gb2312 out=%s ",out);

    //gb2312码转为unicode码
    printf("gb2312-->unicode in=%s ",in_gb2312);
    g2u(in_gb2312,strlen(in_gb2312),out,OUTLEN);
    out[strlen(in_gb2312)] = '';
    printf("gb2312-->unicode out=%s ",out);

    测试中 中文转码有问题。。。没时间搞了。先mark

  • 相关阅读:
    LeetCode15 3Sum
    LeetCode10 Regular Expression Matching
    LeetCode20 Valid Parentheses
    LeetCode21 Merge Two Sorted Lists
    LeetCode13 Roman to Integer
    LeetCode12 Integer to Roman
    LeetCode11 Container With Most Water
    LeetCode19 Remove Nth Node From End of List
    LeetCode14 Longest Common Prefix
    LeetCode9 Palindrome Number
  • 原文地址:https://www.cnblogs.com/xiao0913/p/6340592.html
Copyright © 2011-2022 走看看