字符集,代码页,字符编码

来源:互联网 发布:淘宝富光保温杯 编辑:程序博客网 时间:2024/06/08 12:57

字符集:是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。其中每个字符都有一个序号作为编码值。

代码页:是字符集的别名。凡是涉及到字符处理的地方都要用到字符集,比如不同地区,不同语言的windows的系统代码页也就不同,中文windows系统下的代码页就是gbk字符集 cp936。cmd控制台也具有代码页属性,可以通过chcp命令更改当前这个控制台窗口的活动代码页。

编码:将字符编码为它所对应的字符编码值,如将文字写入文件
解码:将字符编码值解码为相应的字符,如从文件中读取文字

标准ascii码:使用7 位二进制数来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符,编码范围:0-0x7F

latin1:是对ASCII的扩展,收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。编码范围:0-0xFF

gb2312:通行于中国大陆,新加坡等地的一套适用汉字的编码,兼容ASCII.

gbk:对gb2312的扩容,兼容gb2312,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码

Unicode编码字符集只是统一定义了所有字符和它对应Unicode编码值,但因为Unicode包含的字符太多了,最大的编码值要用4个字节才能存储,所以衍生出了不同的编码方案。

  • utf-8:是一种变长的编码方案,用 1~4个字节来编码一个字符

  • utf-16:一般采用2个字节来编码一个字符,而对于辅助平面的字符采用两个2字节来存储。一般别人说这个文件采用Unicode编码什么什么的,就是说utf-16编码。

  • utf-32:由于采用32个字节编码,所以直接用Unicode编码值作为编码

windows记事本下的编码方式:

  • ASCII:指的是对应当前系统 locale 的遗留(legacy)编码,比如你的是英文版本的windows系统,那就是ASCII编码,中文版本的windows系统就是gbk编码…
  • Unicode:带BOM的小端utf-16
  • utf-8:带BOM的utf-8

在不同编码的文本文件中或从网页中复制黏贴文字时,是不用当心乱码的问题的。每个应用程序都可以决定它在剪贴板上的内容。通常,一个Windows应用程序知道它在做什么会在剪贴板上放置一些不同的表示。当您粘贴到其他应用程序时,该应用程序将寻找最适合其需求的表示。

需注意的是:用户输入文字后在文本编辑器上显示的文本的编码是与文本文件的编码是无关的,文本文件的编码是由保存时选择什么样的编码写入文件决定的。通过控制台输入字符串得到的字符串编码也与控制台的代码页有关。

详见:
字符集编码
字符编解码的故事

原创粉丝点击