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 的帖子,可自行搜索。
|