2010-03-15 115 views

回答

2

Wikipedia總是一個好的開始。

然後總是有Joel Spolsky's article: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

請注意,您命名的三件事情在不同的層面上運作。

  • Unicode是一個字符集:字符和數字(代碼點)之間的映射。
  • UTF7映射代碼點和字節。
  • base64映射字節和字節。 (它扭曲字節,以便它們由ASCII範圍中的字節表示。)
+0

- 每個概念的良好參考鏈接和簡短描述。 謝謝 – Rise 2010-03-17 05:37:41

0

關於你的unicode,base64,utf7(沒有人使用它,它可能是utf8)。它們不僅僅是「編碼&解碼」,而是編碼文本數據的解碼。

Unicode是枚舉所有真實和可能的字符的方式。它對編碼本身沒有任何關係。 UTFXX是unicode的編碼集(將代碼轉換爲實際字節)。最受歡迎的是UTF8和UTF16。非常基本的UTF8是ASCII兼容的(字符代碼< 128表示與ASCII相同的方式),但其他字符由2-3字節表示。 UTF16將大部分字符編碼爲2個字節。

Base64沒有關於文本數據。它將通用二進制數據編碼爲由64個可打印ascii字符組成的文本。它通常用於通過電子郵件傳輸二進制數據,UTF8和UTF16。

1

編碼和解碼的定義是有些主觀

兩者都是音譯的形式,是從一個字母表轉換爲另一個字母表的過程。 ASCII到UTF8,ASCII到base64等都是這樣的例子。

什麼區別兩個是,從可用的格式向音譯某種類型的傳輸或中間格式時和解碼是反向「編碼」經常被使用。這就是「主觀」位出現的位置。根據上下文,ASCII到UTF8可以被視爲編碼或解碼。

其他格式等的base64幾乎普遍用於傳輸只(在電子郵件例如二進制數據),並因此轉換成它們幾乎普遍稱爲「編碼」並從轉換爲「解碼」。

重要的一點奪去這一切都是類似ASCII或UTF8是不以任何方式神奇。所有這些格式都只是一種商定的信息編碼成二進制格式。所以ASCII 65是'A',除此之外沒有其他原因。

Unicode格式變得更有趣,因爲它們區分了代碼點編碼。 Unicode定義每個字符的代碼點。每種編碼格式的二進制數據都不相同。例如,請參閱Unicode Character 'EURO-CURRENCY SIGN' (U+20A0)以查看一個代碼點的所有不同二進制值。