python基礎3 字元編碼

來源:互聯網
上載者:User

標籤:閑置   不為   字元   分類   設計   含義   組織   標準   嵌入   

本節主要內容:

  1. 基本概念
  2. ASCII及其擴充
  3. 中文字元編碼
  4. unicode
  5. 注釋
  6. 參考網頁
基本概念

電腦中儲存的資訊都是二進位的0/1串,當我們要在電腦中儲存諸如英文、中文、標點符號等字元時,需要先把字元轉化成二進位的0/1串之後再儲存到電腦中;而當我們要讀取儲存在電腦中的資訊時,需要通過一定的方法把裡面的二進位0/1串轉化成為原先的字元,然後再通過顯示器等渠道進行顯示。

這裡涉及到字元編碼的兩個基本概念:

字元集(Character Set):指系統支援的所有字元的集合。字元包括涉及到的所有文字和符號,如各個國家的語言文字、標點符號和圖形符號等。 字元編碼(Character Encoding):指把字元集中的字元對應表成二進位0/1串的規則,如用多少個位元組儲存,每個位元組存什麼資訊等。例如,可以把字元A映射成二進位的01000001(即十進位的65,十六進位的0×41)。通過編碼之後的字元適合於硬碟儲存、網路傳輸等,但若要再次顯示時則需要以相反的規則把0/1串映射回原先的字元,稱為解碼過程。 另外,相關組織在制定編碼通訊協定的時候,“字元的集合”和“編碼方式”有時是同時制定的,比如我們平常所說的“字元集”如ASCII,GBK,GB2312等,除了有“字元集”這層含義外,同時也包含了“字元編碼”的含義。

ASCII及其擴充

電腦內部儲存資訊的二進位0/1串中,每個位置(bit)只有0和1兩種狀態,一個位元組(byte,含有8個二進位位)可以組合出2^8=256種狀態,從0000000到11111111。如果每種狀態對應一個字元,那麼一個位元組可以表示256個字元。 ASCII碼就是規定了這256個中的一部分字元的編碼通訊協定。ASCII(American Standard Code for Information Interchange,美國資訊互換標準代碼)是美國在1967年制定的一套字元編碼,規定了英語字元及其他常見字元與二進位位之間的映射關係,是沿用至今的影響深遠的編碼系統。 ASCII主要用於顯示現代英語,128個符號對於英語來說已經足夠,但對於其他語言,由於他們的字元數量眾多,128個符號顯得遠遠不夠。一些國家通過利用位元組中閑置的最高位編入新的特殊符號、外來語字母和圖形符號,可以勉強顯示一些西歐國家的語言,稱為擴充ASCII碼。在擴充ASCII碼中,0-127這前128個編碼錶示的符號是一樣的,但128–255這後128個則因不同的國家而各不相同。

中文字元編碼

ASCII編碼能夠很好地對英語字元進行編碼,但對大量的中文漢字則無能為力,為了顯示中文,相關組織設計了相應的中文編碼通訊協定。 為了處理漢字,程式員設計了用於簡體中文的GB2312和用於繁體中文的big5。

GB2312(1980年)一共收錄了7445個字元,包括6763個漢字和682個其它符號。漢字區的內碼範圍高位元組從B0-F7,低位元組從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。

GB2312 支援的漢字太少。1995年的漢字擴充規範GBK1.0收錄了21886個符號,它分為漢字區和圖形符號區。漢字區包括21003個字元。2000年的 GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。現在的PC平台必須支援GB18030,對嵌入式產品暫不作要求。所以手機、MP3一般只支援GB2312。

從ASCII、GB2312、GBK 到GB18030,這些編碼方法是向下相容的,即同一個字元在這些方案中總是有相同的編碼,後面的標準支援更多的字元。在這些編碼中,英文和中文可以統一地處理。區分中文編碼的方法是高位元組的最高位不為0。按照程式員的稱呼,GB2312、GBK到GB18030都屬於雙位元組字元集 (DBCS)。

有的中文Windows的預設內碼還是GBK,可以通過GB18030升級包升級到GB18030。不過GB18030相對GBK增加的字元,普通人是很難用到的,通常我們還是用GBK指代中文Windows內碼。

Unicode

ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字元和符號的編碼,即:Unicode Unicode(統一碼、萬國碼、單一碼)是一種在電腦上使用的字元編碼。Unicode 是為瞭解決傳統的字元編碼方案的局限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進位編碼,規定雖有的字元和符號最少由 16 位來表示(2個位元組),即:2 **16 = 65536, 註:此處說的的是最少2個位元組,可能更多

UTF-8就是unicode的一種具體實現,是可變長的unicode,並且相容ASCII,他不再使用最少使用2個位元組,而是將所有的字元和符號進行分類:ascii碼中的內容用1個位元組儲存、歐洲的字元用2個位元組儲存,東亞的字元用3個位元組儲存...

python3 預設是utf-8 python2 預設是ascii 漢字在python2 會報錯,需要# -- coding:utf-8 -- 加這一段。 python3裡不需要。

注釋

其他:當行注視:# 被注釋內容   多行注釋:""" 被注釋內容 """

參考網頁

http://noalgo.info/571.html?utm_source=tuicool&utm_medium=referral

http://python.jobbole.com/82107/

python基礎3 字元編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.