麦步社区-论坛

标题: 求助:unicode转utf8 [打印本页]

作者: qs100371    时间: 2017-4-12 11:32
标题: 求助:unicode转utf8


从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;
}


作者: reerayxia    时间: 2017-4-12 16:20
百度。。。HOHO。。。
作者: qs100371    时间: 2017-4-12 16:48
是百度了的,写完放源码里最后输出是空白
作者: qs100371    时间: 2017-4-13 09:37
今天发现模拟器上移位有问题,把移位换成乘除法就可以正常模拟了,不过在手表上还是显示不了,只显示一个黑色的问号。
作者: 细川玉木    时间: 2017-4-14 00:10
你辛苦啦




欢迎光临 麦步社区-论坛 (http://203.195.186.190/) Powered by Discuz! X3.2