您的位置:首页 > 其它

字符编码学习笔记

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: