c语言utf8转unicod

来源:互联网 发布:手机简易搜索引擎 知乎 编辑:程序博客网 时间:2024/05/22 20:31

     今天欧阳老大让我在c语言中实现中文(utf8)转换成unicode。用iconv这个函数,在pc上转换成功了,但是下载到开发板上就出现了问题了。打印出的数据跟pc上打印出的数据不同。后来干脆就自己些了个转化函数。在百度上查了unicode的相关资料。终于搞懂了unicode跟utf8的关系了。

下图为百度百科找到的unicode转换表

  UTF-8

  UTF-8以字节为单位对Unicode进行编码。从Unicode到UTF-8的编码方式如下:
  Unicode编码(16进制) ║ UTF-8 字节流(二进制)
  000000 - 00007F ║ 0xxxxxxx
  000080 - 0007FF ║ 110xxxxx 10xxxxxx
  000800 - 00FFFF ║ 1110xxxx 10xxxxxx 10xxxxxx
  010000 - 10FFFF ║ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

 

根据转换表我们很容易就发现规律了。假设第一个字节以0开始,那么它的unicode就为第一个字节的后7位,中文是以1110打头的,所以,中文的unicode就为第一字节的后四位+第二字节的后6位,+第三字节的后6位组成。


根据这个规律,就可以把utf8转换成unicode的程序写出来。

如果不懂的话,再发邮件给我,我们再讨论讨论。。哈哈