数码相框设计-文字编码方式
2017-10-18 20:32
197 查看
我们玩过uboot就会知道,烧写完uboot.bin后串口会打印一段启动信息的字符
我假设在uboot中有puts(“copy”);那么通过串口调试工具(sercucrt等)我们可以在其中看到copy字符:
![](http://img.blog.csdn.net/20171018203409833?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3pnMTM1NDg5MzAxODY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
原理:开发板程序将字符”cop”对应的ASCII编码表中的ASCII码发给PC串口->串口工具收到这个ASCII码0x70、0x6F、0x43->然后串口工具根据0x70、0x6F、0x43 等数据通过串口工具中的ASCII编码表来找到字符C O P ,在由字符所对应的ASCII点阵字体库(如ASC12 ASC16)找到对应的字体数据,把它们的点阵描出来。
![](http://img.blog.csdn.net/20171018214034869?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3pnMTM1NDg5MzAxODY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
全世界那么多个国家,每个国家又有自己特有的编码表(比如美国:ASCII编码表、中国:GBK编码表、台湾:BIG5等等)。不同的编码难免会在不同的国家对应不同字符,那么就引入了一种统一的编码表- unicode编码表
而unicode编码表只是一个字符集,数字与字符的对应关系而已,对于数字的存储就需要一个编码方式-UTF-8
![](http://img.blog.csdn.net/20171018222012093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3pnMTM1NDg5MzAxODY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
补充:Unicode与UTF-8互转
我们分别采取两种不同的编码方式存储:ansci和utf8
![](http://img.blog.csdn.net/20171018225942268?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3pnMTM1NDg5MzAxODY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20171018225958682?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3pnMTM1NDg5MzAxODY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
对比一下结果:
![](http://img.blog.csdn.net/20171018230448630?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3pnMTM1NDg5MzAxODY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
默认不是uft-8格式解析吗,为什么还是以ANSI方式解析没有用默认呢:这是一个巧合,在ansi方式下中对应0xd6 d0恰好也对应和uft-8解析方法的一种,所以将这里的ansi解析方式当作了uft-8解析方式。(验证方法:将编码方式改成
![](http://img.blog.csdn.net/20171018232654121?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3pnMTM1NDg5MzAxODY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
)
查找字符集: /charset
-finput-charset=charset 表示源文件使用编码方式,默认以 UTF-8解析
-fexec-charset=charset 表示可执行程序里的字符串以什么编码方式来表示,默认为 UTF-8
如:
![](http://img.blog.csdn.net/20171018230928774?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3pnMTM1NDg5MzAxODY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
为什么要采用UTF-8编码,UTF-8编码有什么好处?
UNICODE编码表
我假设在uboot中有puts(“copy”);那么通过串口调试工具(sercucrt等)我们可以在其中看到copy字符:
原理:开发板程序将字符”cop”对应的ASCII编码表中的ASCII码发给PC串口->串口工具收到这个ASCII码0x70、0x6F、0x43->然后串口工具根据0x70、0x6F、0x43 等数据通过串口工具中的ASCII编码表来找到字符C O P ,在由字符所对应的ASCII点阵字体库(如ASC12 ASC16)找到对应的字体数据,把它们的点阵描出来。
总结:
全世界那么多个国家,每个国家又有自己特有的编码表(比如美国:ASCII编码表、中国:GBK编码表、台湾:BIG5等等)。不同的编码难免会在不同的国家对应不同字符,那么就引入了一种统一的编码表- unicode编码表
而unicode编码表只是一个字符集,数字与字符的对应关系而已,对于数字的存储就需要一个编码方式-UTF-8
补充:Unicode与UTF-8互转
文字的编码方式导致的问题:
源文件用不同的编码方式编写,会导致执行的结果不同:
源代码:#include <stdio.h> int main(int argc, char **argv) { int i = 0; unsigned char*str = "abc中"; while (str[i]) { printf("%#02x ",str[i]); i++; } printf("\n"); return 0; }
我们分别采取两种不同的编码方式存储:ansci和utf8
对比一下结果:
默认不是uft-8格式解析吗,为什么还是以ANSI方式解析没有用默认呢:这是一个巧合,在ansi方式下中对应0xd6 d0恰好也对应和uft-8解析方法的一种,所以将这里的ansi解析方式当作了uft-8解析方式。(验证方法:将编码方式改成
)
怎么解决?编译程序的时候指定字符集。
执行命令 : man gcc查找字符集: /charset
-finput-charset=charset 表示源文件使用编码方式,默认以 UTF-8解析
-fexec-charset=charset 表示可执行程序里的字符串以什么编码方式来表示,默认为 UTF-8
如:
gcc -finput-charset=GBK -fexec-charset=UTF-8 -o utf8_1 ansi.c
注意:
关于文字编码方式不是此项目的重点,想了解更多下面例出来跳转链接,在此只要会用命令来指定可执行程序的编码即可gcc -finput-charset=GBK -fexec-charset=UTF-8 -o utf8_1 ansi.c
编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
为什么要采用UTF-8编码,UTF-8编码有什么好处?
UNICODE编码表
相关文章推荐
- 学习数码相框1.2.0.0字符的编码方式_显示点阵文字_freetype_在PC上测试freetype
- 编程基础-文字编码-字符集/编码方式/常见乱码错误
- linux应用项目(一)数码相框(2)数码相框之字符编码与字符的点阵显示
- 文字用指定的编码方式编码
- 数码相框的框架设计
- Javascript三种文字编码方式(对应java里的编解码)
- 数码相框设计-系统框架与环境
- js对文字进行编码的方式对比
- 基于STC12C5A60S2的嵌入式数码相框设计
- LED背光在数码相框的设计解决方案
- 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)
- Android HAL实现的三种方式(2) - 基于Service的HAL设计
- struts2的数据验证之编码方式验证和validation.xml验证
- 表单form数据默认以键值对的形式将数据回发到服务器,回发非纯文本需使用enctype=multipart/form-data方式编码为整条消息
- 各种音频编码方式的对比
- 批量修改文件的编码方式
- 嵌入式篇---字符的编码方式
- 个人电子商务网站建设之——整站静态化实现的选择、设计与实现(二):静态页面的实现方式;
- 设置JSP页面默认编码方式以及设置在Java文件中作者、日期等说明
- USB的编码方式