当前位置:首页 > 解签求签

C语言如何将UTF-8转换成Unicode

下面的程序给出了将UTF-8转换成Unicode(UCS-2)的函数:

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltmemory.h & gt

# include & ltstring.h & gt

int utf8_to_unicode(char* pInput,char** ppOutput)

{

int outputSize = 0;//记录转换后的Unicode字符串的字节数。

* ppOutput =(char *)malloc(strlen(pInput)* 2);?//为输出字符串分配足够的内存空间

memset(*ppOutput,0,strlen(pInput)* 2);

char * tmp = * ppOutput//临时变量,用于遍历输出字符串。

while (*pInput)

{

if(* pin put & gt;0x00和。& amp* pInput & lt= 0x7F) //处理单字节UTF8字符(英文字母和数字)

{

* tmp = * pInput

tmp++;

* tmp = 0;//小终端方法意味着在高位地址填充0。

}

else if(((* pInput)& amp;0xE0) == 0xC0) //处理双字节UTF8字符。

{

char high = * pInput

pinput++;

char low = * pInput

如果((低& amp0xC0)!= 0x80)?//检查它是否是合法的UTF8字符表示。

{

return-1;//如果不是,则报错。

}

*tmp =(高& lt& lt6) +(低& amp0x3F);

tmp++;

*tmp =(高& gt& gt2)& amp;0x07

}

else if(((* pInput)& amp;0xF0) == 0xE0)?//处理三字节UTF8字符

{

char high = * pInput

pinput++;

char middle = * pInput

pinput++;

char low = * pInput

如果(((中& amp0xC0)!= 0x 80)| |((low & amp;0xC0)!= 0x80))

{

return-1;

}

* tmp =(middle & lt;& lt6) +(低& amp0x7F);

tmp++;

*tmp =(高& lt& lt4)+((middle & gt;& gt2)& amp;0x0F);

}

不处理含有其他字节的Else // UTF8字符。

{

return-1;

}

pinput++;

tmp++;

outputSize+= 2;

}

* tmp = 0;

tmp++;

* tmp = 0;

返回outputSize

}

扩展数据

UTF-8:随着互联网的普及,对统一编码方法有着强烈的需求。UTF-8是互联网上使用最广泛的unicode实现。其他的实现还有UTF-16和UTF-32,但是在互联网上基本不用。同样,这里的关系是UTF-8是Unicode的实现之一。

UTF-8最大的特点之一就是它是一种变长编码方法。它可以用1~6个字节来表示一个符号,字节长度根据符号的不同而不同。

UTF八号协议的编码规则:

UTF-8编码规则非常简单,只有两条:

1.对于单字节符号,字节的第一位设置为0,接下来的7位是该符号的unicode代码。因此,对于英文字母,UTF-8编码和ASCII编码是相同的。

2.对于n字节的符号(n >;1),第一个字节的前n位全部设置为1,第n+1位设置为0,后面字节的前两位全部设置为10。剩下没有提到的位都是这个符号的unicode码。

  • C语言如何将UTF-8转换成Unicode
  • 八字句的个性签名
  • 2021微信名媛幸运幸运的八个字是什么?
  • 人的命运是取决于出生日期还是取决于个人努力和
  • 93年女,贵由,癸亥,乙巳,戊寅,想知道婚姻会不会很不幸
  • 人行道上铺方砖、地砖、吸水砖有什么区别?方砖、
  • 如何学习八字体系
  • 巴兹伟华
  • 用八字四柱查桃花方位
  • 没有变换的八字组合