字符集与编码

 

字符集与编码

    文章来源: http://www.grauw.nl/blog/entry/254   译者: 阿里巴巴 周剑华  

      最近我被要求解释字符编码(character encoding) 和字符集(character set) 的区别, 我觉得这是一件有意义的事情, 所以决定发表在这里.

      就这两个术语而言, “ 是指字符的集合以及编号( 也就是代码点), 编码 是代码点的表现. 举例说明, Unicode 是字符集,UTFUTF-16 都是Unicode 字符集的不同字符编码.

     下面我们来阐述二者的区别(To illustrate this difference), Unicode 字符集中, 字符€的代码点是8364, ( 通常以十六进制的形式记作 U+20AC ). 如果用UTF-16LE 字符编码的话, €以AC 20 存贮, 而用UTF-16BE 编码, €以20 AC 存贮, UTF-8 中以E2 82 AC 表示( 译者注: java 语言使用Unicode 字符集, java 语言内部使用UTF-16 编码).

     实际上, 这两个术语可以互换使用. 像前面提到区别不适用于大多数非Unicode 字符集( 比如Latin-1 SJIS), 因为它们的代码点和编码相同, 由于这个原因, 从历史的角度看二者并没有什么真正的区别.

      在英语中二者最重要的区别是属于字符集有一点过时(The most important difference in English is that the term character set is a little old fashioned), 而字符编码是我们日常用到的. 就这一点而言, 当描述UTF- 8和UTF-16 是不同的编码时, 使用( 术语) 字符编码可能更恰当一些.

     一些例子:

  • Http 协议使用
Java代码
  1. Content-Type: text/html; charset=UTF-8  

 

  • XML 使用
Java代码
  1. <?xml version="1.0" encoding="UTF-8"?>  

 

      这演示了它们怎样作为同义词使用, 它们都描述了紧随其后的内容的编码.

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章