字符集與編碼

 

字符集與編碼

    文章來源: 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"?>  

 

      這演示了它們怎樣作爲同義詞使用, 它們都描述了緊隨其後的內容的編碼.

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