免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5834 | 回复: 12
打印 上一主题 下一主题

[C] 【求助】如何将UTF-8转为GB2132 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-25 09:10 |只看该作者 |倒序浏览
我接收到UTF-8编码的数据“&# x8001;&# x9F20;&# x7231;&# x5927;&# x7C73;:&# x6768;&# x81E3;&# x521A;”(由于网页显示问题,我在数据里面多加了空格),现在想把它显示出来,不知道用什么办法解析呢?

不知道这样编码的规则是什么?

我试过将数据中的16进制提取出来,然后用iconv函数转成GB2132,结果不对,函数调用报错了。

请尽量详细哈,多谢了!

[ 本帖最后由 loudiaohua 于 2010-1-25 09:44 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2010-01-25 09:23 |只看该作者
据说可以查表

论坛徽章:
0
3 [报告]
发表于 2010-01-25 09:26 |只看该作者
原帖由 DraculaW 于 2010-1-25 09:23 发表
据说可以查表


不知道有没有其他简便的方法呢?

论坛徽章:
0
4 [报告]
发表于 2010-01-25 10:00 |只看该作者
iconv

论坛徽章:
0
5 [报告]
发表于 2010-01-25 10:28 |只看该作者
学习

论坛徽章:
0
6 [报告]
发表于 2010-01-25 11:05 |只看该作者

回复 #4 prolj 的帖子

用iconv能直接转么?

我当时试过了,不行的,能否详细告知呢?

论坛徽章:
0
7 [报告]
发表于 2010-01-25 11:50 |只看该作者
原帖由 prolj 于 2010-1-25 10:00 发表
iconv

楼主仔细去看下sample

论坛徽章:
0
8 [报告]
发表于 2010-01-25 12:06 |只看该作者
我在一个小模块里面就用iconv做了UTF-8到GB2312的转换,iconv是一定OK的。

论坛徽章:
0
9 [报告]
发表于 2010-01-25 13:56 |只看该作者
帮忙看看转换代码哪里有错哈,我怎么转换不了呢?

#include <iconv.h>

#define OUTLEN 255

//代码转换:从一种编码转为另一种编码
int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int 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,int inlen,char *outbuf,int outlen)
{
        return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}

main()
{
        char *in_utf8 = "老鼠爱大米:杨臣刚";
        char out[OUTLEN];
        int rc;

        //unicode码转为gb2312码
     rc = u2g(in_utf8,strlen(in_utf,out,OUTLEN);
        printf("unicode-->gb2312 out=%s\n",out);

        return rc;
}

论坛徽章:
0
10 [报告]
发表于 2010-01-25 14:08 |只看该作者
晕,代码拷贝过来又给直接解析了,char *in_utf8 = "老鼠爱大米:杨臣刚";

应该是char *in_utf8 = "&# x8001;&# x9F20;&# x7231;&# x5927;&# x7C73;&#x 6768;&# x81E3;&# x521A;";

怕被网站解析,我在里面加了空格
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP