返回官网官方微博

麦步社区-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: MAI 表盘
查看: 2475|回复: 4
打印 上一主题 下一主题

求助:unicode转utf8

[复制链接]

66

主题

915

帖子

1万

麦力

精华
8
阅读权限
80
在线时间
1040 小时

麦步极客实验室麦步增强版用户

跳转到指定楼层
楼主
发表于 2017-4-12 11:32:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


从API得到 \u3010\u5df2\u7b7e\u6536\uff0c\u7b7e\u6536\u4eba\u662f\u5feb\u9012\u9a7f\u7ad9\u3011这样的字符串,要转成utf8
下面哪有问题呢?

static int hex2int(char c)
{

    return (c >= 'a' ? (10 + c - 'a') : (c - '0'));
}


static char *unicode2utf8(char *str)
{
    //  \u3010\u5df2\u7b7e\u6536\uff0c\u7b7e\u6536\u4eba\u662f\u5feb\u9012\u9a7f\u7ad9\u3011
    char utf8[3], *out;
    int i, j = strlen(str);
        wchar_t ch;
    out = (char *)malloc(200);

    for (i = 0; 6*i < j; i++)
    {
        ch = hex2int(*(str + 6 * i + 2)) << 12 + hex2int(*(str + 6 * i + 3)) << 8 + hex2int(*(str + 6 * i + 4)) << 4 + hex2int(*(str + 6 * i + 5));

        memset(utf8, 0, 3);
        utf8[0] = 0xE0 | (ch >> 12);
        utf8[1] = 0x80 | ((ch >> 6) & 0x3F);
        utf8[2] = 0x80 | (ch & 0x3F);

        strcat(out, utf8);

    }

    return out;
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信 WeiboWeibo
收藏收藏1 分享分享 顶 踩

5

主题

174

帖子

2456

麦力

精华
2
阅读权限
50
在线时间
187 小时

沙发
发表于 2017-4-12 16:20:14 | 只看该作者
百度。。。HOHO。。。
回复

使用道具 举报

66

主题

915

帖子

1万

麦力

精华
8
阅读权限
80
在线时间
1040 小时

麦步极客实验室麦步增强版用户

板凳
 楼主| 发表于 2017-4-12 16:48:09 | 只看该作者
是百度了的,写完放源码里最后输出是空白

66

主题

915

帖子

1万

麦力

精华
8
阅读权限
80
在线时间
1040 小时

麦步极客实验室麦步增强版用户

地板
 楼主| 发表于 2017-4-13 09:37:49 | 只看该作者
今天发现模拟器上移位有问题,把移位换成乘除法就可以正常模拟了,不过在手表上还是显示不了,只显示一个黑色的问号。

23

主题

1532

帖子

9071

麦力

精华
0
阅读权限
80
在线时间
103 小时

5#
发表于 2017-4-14 00:10:56 | 只看该作者
你辛苦啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|麦步官方论坛 ( 粤ICP备12052190号  

GMT+8, 2024-4-25 04:30 , Processed in 0.076153 second(s), 24 queries .

Powered by Discuz! X3.2

© 2012-2021 Comsenz Inc.

快速回复 返回顶部 返回列表