UTF-8 转 Unicode
在编写FTP Client时,发现通过recv获取的数据是采用UTF-8方式进行编码的,直接用Unicode方式进行显示时会发生错误。采用MultiByteToWideChar也无法正确转换(default是Ascii to Unicode。是我的设置问题?没有仔细研究)。
因此学习了下UTF-8的编码原理,参考如下:
标准的UTF-8是有一个头(是EF BB BF)和Unicode有一个(FF FE头一样),每一个字可以由一个byte(如:英文字母、数字),也可以由二个byte(如:泛欧语系、斯拉夫语字母),也可以由三个byte组成(如:汉字)。一般由四个byte组成的字很少很少。UTF-8编码模板如下:
UCS-4 range (hex.) UTF-8 octet sequence (binary)
0000 0000-0000 007F 0xxxxxxx
0000 0080-0000 07FF 110xxxxx 10xxxxxx
0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
从这个头之后的第一个byte,如果是0xxxxxxx形式,就说明这个字只有一个byte组成,如果是110xxxxx形式就说明这个字有二个byte组成,如果是1110xxxx形式就说明有三个byte组成,如果是11110xxx就说明有四个byte组成。
转换算法可以简单的理解为:
首先判断这个UTF-8有没有头
UTF-8 转 Unicode
最新推荐文章于 2024-09-04 08:35:12 发布
本文介绍了在FTP客户端开发中遇到的UTF-8到Unicode转换问题,详细讲解了UTF-8编码原理和转换算法,并提供了C++实现的转换代码示例。
摘要由CSDN通过智能技术生成