1. 程式人生 > >字元編碼的發展(ASCII、Unicode、utf-8)

字元編碼的發展(ASCII、Unicode、utf-8)

  最近一直在看廖雪峰老師的python網上教程,python內容簡單易理解,就沒整理,但是字串編碼作為一直困擾自己的問題,看了幾遍文章,最終還是將其整理如下,本篇部落格總結自廖雪峰老師的網上教程:http://www.liaoxuefeng.com/

  首先我們要明確三者出現的時間依次是:ASCII,Unicode,utf-8,那麼為什麼這樣的順序出現,就是我們記住這些編碼必須要知道的。

  計算機是美國人發明的,而英文中只有127個字母,也就是我們常說的ASCII碼錶示的,因此8位二進位制足以表示,因此就出現了ASCII碼錶示;

  但是,隨著計算機的發展,計算機需要能夠表示更多的語言,例如中文、韓文、日文等,中文幾萬個字,ASCII碼肯定表示不了了,何況還有韓文、日文,因此這些國家又都用自己的語言表示方法,例如GB2312

Shift_JISEuc-kr等,這樣問題本來應該能解決編碼的問題的,一個國家語言只要使用一種編碼方式就行了。但是問題在於每個國家都有自己的標準,因此編碼在不同語言之間就會出現衝突,因此急需一種統一的編碼,能夠表示“所有”國家的語言(其實是諸多國家,並不一定所有,少眾語言可能還不能表示),Unicode編碼營運而生。

  然而Unicode編碼大一統的表示所有語言,Unicode標準也在不斷髮展,但最常用的是用兩個位元組表示一個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代作業系統和大多數程式語言都直接支援Unicode。然而自然想到Unicode相對於ASCII碼錶示的效率很低,因為ASCII碼錶示一個字元1個位元組,而Unicode需要2個,並且世界上絕大多數的語言都是基於英文的,那麼如何才能既能表示所有的語言,又能節省表示空間呢,這樣utf-8變長編碼就出現了。

  utf-8採用變長編碼,英文字母符號採用1位元組編碼,漢字通常3個位元組,生僻字也有4-6位元組的,這樣子既統一了語言表達,又提高了效率。可見ACSII碼其實是utf-8的子集。

  問題到這貌似解決了,但是計算機怎麼知道你通過哪種語言表示呢,也就是計算機系統如何表示字元編碼呢:

  計算機硬碟等儲存的是utf-8節省儲存空間,計算機記憶體儲存的是Unicode,因此讀寫的時候會出現編碼轉換;

  網路傳輸一樣,網路傳輸使用utf-8編碼節省通訊開銷,計算機記憶體中儲存的是Unicode,因此讀寫的時候也會出現編碼轉換。

rw-file-utf-8web-utf-8

----------------------------------------------------------------------

程式設計師A:借我1000元吧。
程式設計師B:給你湊個整數,1024元吧

相關推薦

字元編碼筆記:ASCIIUnicodeUTF-8

今天中午,我突然想搞清楚 Unicode 和 UTF-8 之間的關係,就開始查資料。 這個問題比我想象的複雜,午飯後一直看到晚上9點,才算初步搞清楚。 下面就是我的筆記,主要用來整理自己的思路。我儘量寫得通俗易懂,希望能對其他朋友有用。畢竟,字元編碼是計算機技術的基石,想要熟練使用計算機,就必須懂得一點字元編

Python3_字元編碼Encoding:ASCIIUnicodeUTF-8

Python 3的字串str型別用Unicode,直接支援多語言。 當str和bytes互相轉換時,需要指定編碼。最常用的編碼是UTF-8。Python當然也支援其他編碼方式,比如把Unicode編碼成GB2312: >>> '中文'.encode('gb2312') b'

字元編碼筆記:ASCIIUnicodeUTF-8

今天中午,我突然想搞清楚Unicode和UTF-8之間的關係,於是就開始在網上查資料。 結果,這個問題比我想象的複雜,從午飯後一直看到晚上9點,才算初步搞清楚。 下面就是我的筆記,主要用來整理自己的思路。但是,我儘量試圖寫得通俗易懂,希望能對其他朋友有用。畢竟,字元編

字符編碼筆記:ASCIIUnicodeUTF-8

evel IE 閑置 for 之一 問題: window bit tar 作者: 阮一峰 日期: 2007年10月28日 今天中午,我突然想搞清楚 Unicode 和 UTF-8 之間的關系,就開始查資料。 這個問題比我想象的復雜,午飯後一直看到晚上9點,才算初步搞清楚

[轉]字符編碼筆記:ASCIIUnicodeUTF-8

中文編碼 new fff notepad absolut 歐洲 簡體中文 戰爭 遊記 本文非原創,轉載 ,原文地址 :http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 作者: 阮

【轉載】字元編碼ASCIIUnicodeUTF-8的區別

1. ASCII碼 我們知道,在計算機內部,所有的資訊最終都表示為一個二進位制的字串。每一個二進位制位(bit)有0和1兩種狀態,因此八個二進位制位就可以組合出256種狀態,這被稱為一個位元組(byte)。也就是說,一個位元組一共可以用來表示256種不同的狀態,每一個狀態對應一個符

三種常見字元編碼ASCIIUnicodeUTF-8

什麼是字元編碼? 計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),如果要表示更大的整數,就必須用更多的位元組。比如

關於字元編碼asciiunicodeutf-8

轉自:https://foofish.net/unicode_utf-8.html   阮一峰老師對普及計算機基礎技術功不可沒,但畢竟老師不是神,因此也避免不了對某些概念有一些錯誤的理解,《字元編碼筆記:ASCII,Unicode 和 UTF-8 》 是阮老師10年前寫的一篇關於字元編

字元編碼ASCIIUnicodeUTF-8

一、什麼是字元編碼?        字元編碼(英語:Character encoding)也稱字集碼,是把字符集中的字元編碼為指定集合中某一物件(例如:位元模式、自然數序列、8位組或者電脈衝),以便文字在計算機中儲存和通過通訊

字元編碼:ANSI和ASCII區別UnicodeUTF-8區別

ANSI和ASCII區別 ANSI碼(American National Standards Institute) 美國國家標準學會的標準碼 ASCII碼(America Standard Code

字元編碼ANSI和ASCII區別UnicodeUTF-8區別

今天看了一個說法,說是入坑windows程式開發,必先掌握文字的編碼和字符集知識。本部落格就整理下資訊儲存和字元編碼的相關知識。 一.位: 計算機儲存資訊的最小單位,稱之為位(bit),音譯位元,二進位制的一個“0”或一個“1”叫一位。 二.位元組 位元

字元編碼ASCIIUnicodeUTF-8

1. ASCII碼 我們知道,在計算機內部,所有的資訊最終都表示為一個二進位制的字串。每一個二進位制位(bit)有0和1兩種狀態,因此八個二進位制位就可以組合出256種狀態,這被稱為一個位元組(byte)。也就是說,一個位元組一共可以用來表示256種不同的狀態,每一個狀態對

Java 字符編碼 ASCIIUnicodeUTF-8

之間 family 打印 com 但是 例如 進制數 英語 utf-16   1 ASCII碼   統一規定英語字符與二進制位之間的關系。ASCII碼一共規定了128個字符的編碼。例如,空格“SPACE”是32(二進制00100000),大寫字母A是65(二進制010000

字符編碼ASCIIUnicodeUTF-8的理解

F5 標準化 一般來說 簡書 打開文件 說了 tps can 常用 首先我們先要明白的兩點是:1、計算機中的信息都是由二進制的0和1儲存的;2、我們再計算機屏幕上看到的各種字符都是計算機系統按照一定的規則將二進制數字轉換而來的。 一、基本概念。 1、字符集(charse

編碼方式ASCIIUnicodeUTF-8的區別及聯絡

最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),如果要表示更大的整數,就必須用更多的位元組。比如兩個位元組可以表示的最大整數是65535,4個位元組可以表示的最大整

Python2.7 中文字元編碼 & Pycharm utf-8設定Unicodeutf-8的區別

Python2.7 中文字元編碼 & Pycharm utf-8設定、Unicode與utf-8的區別 [email protected] 作者:Zhouwan  2017-6-6  一、關於編碼和亂碼,有以下幾個重要的概念需要搞清楚:     二、Pycharm 設定編碼, 可以

ASCIIUnicodeUTF-8編碼的區別

歸納: 編碼大小支援語言 ASCII 1個位元組 英文 Unicode 2個位元組(生僻字4個) 所有語言 UTF-8 1-6個位元組,英文字母1個位元組,漢字3個位元組,生僻字4-6個位元組 所有語言 具體解釋: 最早只有127個字母被編碼到計算機裡,也就是大小寫英文字母、數字和一

ASCIIUnicodeUTF-8編碼的區別;中英文混合擷取

摘要總結: ASCII編碼是128個字元 中國把漢字編入GB2312,Shift_JIS/Euc-kr各國標準..... Unicode是為了解決各國亂碼的,但浪費儲存空間 UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6位元組,英文字母是1位元組,漢字

字符編碼ANSI和ASCII區別UnicodeUTF-8區別

span 編輯 日本 發展 不同語言 保存 code 導致 style ANSI碼ANSI編碼是一種對ASCII碼的拓展:ANSI編碼用0x00~0x7f (即十進制下的0到127)範圍的1 個字節來表示 1 個英文字符,超出一個字節的 0x80~0xFFFF 範圍來表示其

編碼ASCII碼&GB2312&gbk&unicode&UTF-8

                                          &