博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UTF-8格式
阅读量:2491 次
发布时间:2019-05-11

本文共 1843 字,大约阅读时间需要 6 分钟。

前言

  通过串口接收来自GPS芯片发送的格式化数据,解析存取数据并返回显示经纬度所对应的地址。

  通过百度API,获取了对应经纬度的相关地址数据。但是接口文档数据格式是UTF-8格式的。

  突然想细致的了解下,UTF-8的具体实现。

 

经过网页返回的数据,我将返回数据保存到了本地文件。

 

0
27.985899990961
120.68210002289
浙江省温州市瓯海区塘东路
梧田,南浦,大堡底
塘东路
瓯海区
温州市
浙江省
中国
178
南塘大道立交桥西406米

 

 

UTF-8初步了解

UTF-8用1到6个字节编码UNICODE字符,是可变长类型

  • 1字节 0xxxxxxx 
  • 2字节 110xxxxx 10xxxxxx 
  • 3字节 1110xxxx 10xxxxxx 10xxxxxx 
  • 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 
  • 5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 
  • 6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

上面是他的编码类型,网上有很多参考内容

UTF-8概要:

遇到英文,UTF-8自动用1个字节去记录,

例如: 字符‘a’ 的字符集编码是97,UTF-8自动选用了1字节的方法 0xxxxxxx,排序后0110 0001

遇到中文,UTF-8一般用3个字节去表示

例如: 中文‘浙’ 的编码GBK2312的16进制是 6D59,其二进制0110 1101 0101 1001

由UTF-8表示的话,则自动选取 3字节的方法1110xxxx 10xxxxxx 10xxxxxx 

对应表

1110xxxx 10xxxxxx 10xxxxxx

         0110        110101        011001
排序后

 1110 0110 1011 0101 1001 1001 1110 0110

 

大概思路:

 

 

  1. 发现字符集为负的。
  2. 从第一个为负的字符集开始取,取三个字节
  3. 交付给函数Getplacename。
  4. 返回由三个字符集为负的字节所计算出来的中文 wchar_t 类型

 

Getplacename大概思路:

  1. 先把三个字符集为负的数转换成二进制,然后统一放入一个临时数组。
  2. 设已知是3个字节,将 UTF-8 24bit 转换成 Unicode 16bit
  3. 将放着 Unicode 16bit 的二进制char型数组 转换成整型
  4. 返回整型字符集,如果是 “浙” 则返回 27993.
  5. 将整型赋给 wchar_t 时,他会自动解释为字符集所对应的字符串,也就是“浙”

 

但我还是遇到一个非常懊恼的问题,这个wchar_t不知道为什么无法打印出来。

希望我以后能够解决。

 

 

 

 

 

2015年11月27日   -    wchar_t 打印到控制台

 

#include <locale.h>

在类构造或者其他位置设置一次即可。

setlocale(LC_ALL,  "Chinese-simplified");

转载地址:http://qaqrb.baihongyu.com/

你可能感兴趣的文章
必学高级SQL语句
查看>>
经典SQL语句大全
查看>>
log日志记录是什么
查看>>
<rich:modelPanel>标签的使用
查看>>
<h:commandLink>和<h:inputLink>的区别
查看>>
<a4j:keeyAlive>的英文介绍
查看>>
关于list对象的转化问题
查看>>
VOPO对象介绍
查看>>
suse创建的虚拟机,修改ip地址
查看>>
linux的挂载的问题,重启后就挂载就没有了
查看>>
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
openstack报错解决一
查看>>
openstack报错解决二
查看>>
linux source命令
查看>>
openstack报错解决三
查看>>
乙未年年终总结
查看>>
子网掩码
查看>>
第一天上班没精神
查看>>