目录

一些预备知识:

在中国windows的编码是本地编码 , 即GBK,GB2312,GB18030等

  GBK  也就是windows-986

Windows现在只支持Unicode (UTF-16),不再支持ANSI(因为各国家地区标准不统一,导致转换不便)

android系统中的编码,根据不同地区法律改变?

ASCIl的时候, 还不区分字符集和编码.

字符集(char set)就是字符的集合,收录了一定数量的字符。每个字符有对应的ID值,叫码点(code point)。实际存储的时候,不一定是直接存储字符串的码点(比如,为了节约空间),要进行转换。这个转换规则就是编码。

有多少个字符集呢?

名词解析:

character encoding

code point / code position

character map 字符映射

BOM (Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。

  UCS 规范建议我们在传输字节流前, 先传输字符 "Zero Width No-Break Space"。这样如果接收者收到 FEFF,就表明这个字节流是 Big-Endian 的;如果收到FFFE,就表明这个字节流是 Little- Endian 的。因此字符 "Zero Width No-Break Space" (“零宽无间断间隔”)又被称作 BOM。

ANSI ANSI编码

  ascii gbk2312 big5 等都是ANSI的一种

  不同 ANSI 编码之间互不兼容

UCS Unicode Character Set

UTF-8  UTF意为通用字集转换格式(Universal Character Set Transformation Format)

  编码方案

  UTF-7、UTF-8和UTF-16都是基于Unicode的编码方案。

Unicode  Universal Multiple-Octet Coded Character Set

  范围0-0x10FFFF : 1114112个字符   (17*65536 : 17个plane,每个plane有65536个字符)

  已定义的有近十万个字符,其中七万多是汉字

  

  字符集 UTF-8编码用这个字符集,UTF-16也是用这个字符集.

MBCS(Multi-Byte Chactacter System,即多字节字符系统)  它是编码的一种类型,而不是某个特定编码的名称。

UTF-16 和 UTF-8 一样是变长的编码. (它们变长的"粒度"不一样,以8比特为单位增加和以16比特为单位增加.),以此类推UTF-32 至少需要32比特表示

  因为至少要二个字节表示一个字符,所以UTF-16不兼容ASCII (一个字节)

码位 : 可以分配给字符的数字。

UCD: Unicode字符数据库(Unicode Character Database)

  block script

Big Endian和Little Endian

  

utf-8没有大小端的问题?

  因为UTF-8是前缀码,而UTF-16有这个问题.所以需要BOM标记.

命令:

locale

locale -a

问题

一篇文章能有两种编码吗(比如前部分为UTF-8 , 后面为GBK18030) ?  如果这样不冲突,编码如何被解码?  (或者这样表述更清楚,两种编码能混用吗?)

一些工具:

  查看字符的实际编码.对应的二进制数据.

Linux下的工具:

  locale 命令的作用范围,例外情况( 在某个应用或路径中使用指定的locale)

字符集:en_US.UTF-8 支持中文吗?

  en_US.UTF-8 表示的字符集和zh_CN.UTF8 都是UTF-8 , 前面的en_US 或 zh_CN只是告诉系统,你讲什么语言,在哪个地域.

  UTF-8是编码,它属于Unicode字符集。

解码,编码过程?

UTF-16分为大端和小端, UTF-8呢?

  UTF-8

一段二进制编码,如何确定它是GBK还是BIG5还是UTF-16/UTF-8?  

  记事本的做法是在TXT文件的最前面保存一个标签,如果记事本打开一个TXT,发现这个标签,就说明是unicode。标签叫BOM,如果是0xFF 0xFE,是UTF16LE,如果是0xFE 0xFF则UTF16BE,如果是0xEF 0xBB 0xBF,则是UTF-8。如果没有这三个东西,那么就是ANSI,使用操作系统的默认语言编码来解释。(链接:https://www.zhihu.com/question/20650946/answer/15751688)
  
(http://blog.csdn.net/xiongxiao/article/details/3741731)
输入法实现?
打开记事本,输入一些字符,是在保存的时候才确定编码方式的吗? 如果是,在保存之前记事本中的内容用什么术语称呼?

活用:

自己如何设计出一种编码?

输入法设计

编码类型转换:

  

============================================================================================================

一些可以帮助理解的模型,解释字符集等一系列相关概念的关系:

  四层模型,五层模型

  (其实大多数代码页都不需要完整的四层模型,例如GB18030以字节为编码单位,直接规定了字节序列和字符的映射关系,跳过了第二层,也不需要第四层。)

"the complete model needed to describe character sets and encodings"

a character set encoding involves at least two components, a set of characters, and a system for their encoded representation in the computer.

A more complete model is actually necessary, involving four different levels of representation: the abstract character repertoire, the coded character set, the character encoding form, and the character encoding scheme.

4个

1. abstract character repertoire 抽象字符集         字符的范围

  抽象的字符层面 

2. coded character set 编码字符集          用数字表示字符   utf-8

  数学意义上的字符编号

  比如Unicode的某个字符的,还没被转换成具体的存储内容前的号码

3. character encoding form 字符编码格式             用基本数据类型表示字符

  程序员的视角:字节 

  跟大小端无关的实际存储

4. character encoding scheme字符编码方案        作为字节流的字符

  二进制的实际表示:电脑中的实际存储的字节 (BE/LE)

  UTF-16, UTF-32 等多字节才需要这一层   大小端

(

Character set encoding basics

  http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-chapter03

浅谈文字编码和Unicode

  http://www.fmddlmyy.cn/text16.html

  http://www.fmddlmyy.cn/text16.html

A tutorial on character code issues

  https://www.cs.tut.fi/~jkorpela/chars.html)

计算机组成原理中的概念:

  

最新文章

  1. FireMonkey 导出目前 Style 另存文件
  2. hdu 1318 Palindromes
  3. 学习C++的第二天
  4. 【微博SDK调用逻辑】微博SDK的调用逻辑,最好自己还是写一个例子,试一下!!!
  5. linux:档案权限
  6. hive内部表与外部表区别
  7. java学习多线程之死锁
  8. codevs3945 完美拓印
  9. Codeforces 235E Number Challenge
  10. 前端必备技能之Photosh切图
  11. UML之时序图
  12. 一个原生input上传图片记录
  13. js-将文本复制到剪切板
  14. python3 小数据池
  15. C# 修改编译版本的方法
  16. Docker 镜像的导入和导出
  17. 火狐hr标签的兼容性问题
  18. linux 初始设置
  19. archlinux安装gnome的一些坑随记
  20. ant-design-pro使用服务器数据接口代理配置

热门文章

  1. css 垂直居中
  2. 分享一下Java写的坦克大战游戏,相信很多人小时候玩过
  3. Hibernate 系列 03 - 使用Hibernate完成持久化操作
  4. 织梦DedeCMS模板防盗的四种方法
  5. 搭建SpringMVC+Spring+Hibernate平台
  6. 使用Servlet和JSP实现一个简单的Web聊天室系统
  7. Permutation Sequence
  8. [LeetCode] Group Shifted Strings 群组偏移字符串
  9. [LeetCode] Unique Paths II 不同的路径之二
  10. Ubuntu下git的安装与使用