字符编码学习笔记
2013-12-16 14:48
162 查看
1.编码方式(数字
-------------------> 代表什么
---------------> 显示为什么)
编码(ascii,gbk,unicode) 字体文件(编码,点阵字体)
所谓的编码,是用预先规定的方法将文字、数字或其他对象编程数码。
ASCII码:用一个字节的低七位来表示英文字符、数字和其他一些符号。也就是
说我们看到的这些字符、数字在计算机中都有对应的码值,例如字符'A'对应的
ASCII码为0x41.在当时使用ASCII码就可以解决所有的字符集。
国标码(GBK):对于内陆人使用的是汉字,采用的是国标码,使用两个字节来代表
一个汉字。
unicode编码:为了解决全世界统一的编码方式,采用了unicode编码,这个表给出
这个表给出了某个数值与字符的关系;某个数字代码某个符号。而这个编码表是
如何表示它呢?(比如说用3个字节表示一个unicode编码,这种方法显然是很浪费的)
因此如何来表示unicode编码出现了多种方式:UTF-8 UTF-16
2.一个例子
将含有abc字符的文件依次保存为ascii,utf-8,utf-16格式,然后用UE打开,查看
其内容。<CTRL +
H>
ascii:
00000000: 61
62 63 ;abc <使用一个字节进行编码>
utf-8:
00000000: EF
BB BF 61 62 63 ;abc <EF BB BF
表示使用UTF-8方式来存储unicode编码>
utf-16-le: 00000000: FF FE 61 00
62 00 63 00 ;abc
<使用两个字节来表示unicode编码>
utf-16-be:
00000000: FE FF 00 61 00 62 00 63 ;abc
在以上文件中加上"中"
ascii:
00000000: 61
62 63 D6 D0 ;abc
<使用一个字节进行编码,使用国标码>
utf-8:
00000000: EF
BB BF 61 62 63 E4 B8 AD;abc <EF BB
BF 表示使用UTF-8方式来存储unicode编码>
utf-16-le: 00000000: FF FE 61 00
62 00 63 00 4E 2D;abc
<使用两个字节来表示unicode编码,为unicode编码>
utf-16-be:
00000000: FE FF 00 61 00 62 00 63 2D 4E;abc
3.UTF-8是如何来表示unicode?
中 : E4 B8 AD 11100100 10111000 10101101
是一种变长的存储方式
第一个字节的前n位为1,n+1位为0表示用n个字节来表示该字符的unicode编码
后面的n-1个字节的前2位都为10,剩下的这些值用来表示该字符的unicode值
由此可知"中"的unicode 0100111000101101
UTF-8使用最普遍,其优点:
变长存储
具有容错性,即便出错也只会导致若干个乱码,如果是UTF-16,其中一个错误
会导致整个文件遭到破坏。
4.一个现象的分析?
当我们使用putc(char ch)从开发板的的串口发出一个字符'A',是如何在我们
的windows终端显示出'A'来的?
字符是以其ascii码进行存储的,因此通过串口线传输的实际上是字符'A'的
ascii码0x41,而我们windows终端软件接收到这个ascii码时,如何显示是要
通过查找存储在系统中的字体库文件,字体库文件中包括字符的码值和字符的
字体点阵数据,通过查找字体文件最终将该码值对应的字体点整数据显示在屏幕
上。
如何得知一个字体文件中含有字体编码值?
我们设置UE中某个文件的字体时,就会有字符集选择,字符集就是字符编码的
方式:当我们设置字体为黑体时,字符集中就有CHINESE_GB2312
5.一个C源代码用不同的(编码方式)字符集保存,会导致执行结果不一致?
这显然是不应该出现的,解决方法:编译程序时应该指定一些参数
finput charset= charset
表示源文件的编码方式,默认为UTF-8来解析
fexec charset = charset
表示可执行程序里的字符以什么方式来解析,默认为UTF-8
-------------------> 代表什么
---------------> 显示为什么)
编码(ascii,gbk,unicode) 字体文件(编码,点阵字体)
所谓的编码,是用预先规定的方法将文字、数字或其他对象编程数码。
ASCII码:用一个字节的低七位来表示英文字符、数字和其他一些符号。也就是
说我们看到的这些字符、数字在计算机中都有对应的码值,例如字符'A'对应的
ASCII码为0x41.在当时使用ASCII码就可以解决所有的字符集。
国标码(GBK):对于内陆人使用的是汉字,采用的是国标码,使用两个字节来代表
一个汉字。
unicode编码:为了解决全世界统一的编码方式,采用了unicode编码,这个表给出
这个表给出了某个数值与字符的关系;某个数字代码某个符号。而这个编码表是
如何表示它呢?(比如说用3个字节表示一个unicode编码,这种方法显然是很浪费的)
因此如何来表示unicode编码出现了多种方式:UTF-8 UTF-16
2.一个例子
将含有abc字符的文件依次保存为ascii,utf-8,utf-16格式,然后用UE打开,查看
其内容。<CTRL +
H>
ascii:
00000000: 61
62 63 ;abc <使用一个字节进行编码>
utf-8:
00000000: EF
BB BF 61 62 63 ;abc <EF BB BF
表示使用UTF-8方式来存储unicode编码>
utf-16-le: 00000000: FF FE 61 00
62 00 63 00 ;abc
<使用两个字节来表示unicode编码>
utf-16-be:
00000000: FE FF 00 61 00 62 00 63 ;abc
在以上文件中加上"中"
ascii:
00000000: 61
62 63 D6 D0 ;abc
<使用一个字节进行编码,使用国标码>
utf-8:
00000000: EF
BB BF 61 62 63 E4 B8 AD;abc <EF BB
BF 表示使用UTF-8方式来存储unicode编码>
utf-16-le: 00000000: FF FE 61 00
62 00 63 00 4E 2D;abc
<使用两个字节来表示unicode编码,为unicode编码>
utf-16-be:
00000000: FE FF 00 61 00 62 00 63 2D 4E;abc
3.UTF-8是如何来表示unicode?
中 : E4 B8 AD 11100100 10111000 10101101
是一种变长的存储方式
第一个字节的前n位为1,n+1位为0表示用n个字节来表示该字符的unicode编码
后面的n-1个字节的前2位都为10,剩下的这些值用来表示该字符的unicode值
由此可知"中"的unicode 0100111000101101
UTF-8使用最普遍,其优点:
变长存储
具有容错性,即便出错也只会导致若干个乱码,如果是UTF-16,其中一个错误
会导致整个文件遭到破坏。
4.一个现象的分析?
当我们使用putc(char ch)从开发板的的串口发出一个字符'A',是如何在我们
的windows终端显示出'A'来的?
字符是以其ascii码进行存储的,因此通过串口线传输的实际上是字符'A'的
ascii码0x41,而我们windows终端软件接收到这个ascii码时,如何显示是要
通过查找存储在系统中的字体库文件,字体库文件中包括字符的码值和字符的
字体点阵数据,通过查找字体文件最终将该码值对应的字体点整数据显示在屏幕
上。
如何得知一个字体文件中含有字体编码值?
我们设置UE中某个文件的字体时,就会有字符集选择,字符集就是字符编码的
方式:当我们设置字体为黑体时,字符集中就有CHINESE_GB2312
5.一个C源代码用不同的(编码方式)字符集保存,会导致执行结果不一致?
这显然是不应该出现的,解决方法:编译程序时应该指定一些参数
finput charset= charset
表示源文件的编码方式,默认为UTF-8来解析
fexec charset = charset
表示可执行程序里的字符以什么方式来解析,默认为UTF-8
相关文章推荐
- python学习笔记8-9(字符编码与二进制)
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
- 字符集和字符编码学习笔记
- 字符编码学习笔记 (一)
- MySQL学习笔记 - 字符编码
- python2.7学习笔记(3) ——字符编码,列表,元组
- Python学习笔记:Python字符编码问题的经验小结
- python学习笔记8-9(字符编码与二进制)
- 12. JAVA IO Part 3 (数据操作流、合并流、压缩流、回退流、字符编码) ----- 学习笔记
- XML学习笔记(一):关于字符编码的理解
- Python学习笔记——字符编码与二进制,字符编码的区分和介绍和用的交互程序
- JavaWeb学习笔记 中文字符编码
- 2013.7.27 学习笔记《windows核心编程》(三) 资源与字符编码
- python基础教程学习笔记 — 字符编码问题
- 【tvision学习笔记一】环境搭建及字符编码问题
- 转:字符集和字符编码学习笔记
- 字符编码学习笔记
- 字符编码学习笔记
- Python学习笔记(二)字符编码转化
- 学习sql server笔记。