曲径通幽论坛

标题: unicode 转 utf-8 算法 [打印本页]

作者: beyes    时间: 2013-11-19 14:40
标题: unicode 转 utf-8 算法
utf-8 是 unicode 的一种实现形式,有时会遇到纯的 unicode 编码,比如 0x8d44 ,这里提供一个实现转换的程序段:
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv)
{
        char dest[8] ={ 0 };
        char *b = dest;
        int c;

        c = 0x8d44;

        if (c<0x80) *b++=c;
        else if (c<0x800) *b++=192+c/64, *b++=128+c%64;
        else if (c-0xd800u<0x800) goto error;
        else if (c<0x10000) *b++=224+c/4096, *b++=128+c/64%64, *b++=128+c%64;
        else if (c<0x110000) *b++=240+c/262144, *b++=128+c/4096%64, *b++=128+c/64%64, *b++=128+c%64;
        else goto error;

        printf ("%s\n", dest);

        return 0;

error:
        printf ("error input!\n");
        return -1;
}

运行输出:

程序中只针对一个 unicode 码做了转换。程序片段的算法含义,可以根据 UTF-8 的构成规律进行分析。在本站中,也提供了几篇关于 UTF8 和 UNICODE 的帖子,可自行搜索。





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2