字符编码与二进制
字符編碼
Python 解釋器在加載.py文件中的代碼是,會對內(nèi)容進行編碼(默認ascII)
ASCII(American Standard Code for Iformation Interchange,美國標準信息交換代碼)是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現(xiàn)代英語和其他西歐語言,其最多只能用8位來表示(一個字節(jié)),即2**8=256-1,所以ASCII碼最多只能表示255個符號。
ASCII 字符代碼表 一
關(guān)于中文
為了處理漢字,程序員設(shè)計了用于簡體中文的GB2312和用于繁體中文的big5。
GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其他符號。漢子去的內(nèi)碼范圍高字節(jié)從B0-F7,低字節(jié)從A1-FE,占用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。
GB2312支持的漢字太少。1995年的漢字擴展規(guī)范GBK1.0收錄了21886個符號,他分為漢字區(qū)和圖文符號區(qū)。漢字區(qū)包括21003個字符。2000年的GB18030是取代GBK1.0的正式國家標準。該標準收收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數(shù)民族文字。現(xiàn)在的PC平臺必須支持GB18030,對嵌入式產(chǎn)品暫不作要求。所以手機、mp3只支持GB2312.
從ASCII、GB2312、GBK到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中總是有相同的編碼,后面的標準支持更多的字符。在這些編碼中,英文和中文可以統(tǒng)一地處理。區(qū)分中文編碼的方法是高字節(jié)的最高位不為0.按程序員的稱呼,GB2312、GBK到GB18030都屬于雙字節(jié)字符集(DBCS)。
有的中文Windows的缺省內(nèi)碼還是GBK,可以通過GB18030升級包升級到GB18030。不過GB18030相對GBK增加的字符,普通人是很難用到的,通常我們還是用GBK指代中文Windows內(nèi)碼。
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字符和符號的編碼,即:Unicode
Unicode(統(tǒng)一碼,萬國碼,單一碼)是一種在計算機上使用的字符編碼,Unicode是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個字符設(shè)定了統(tǒng)一并且唯一的二進制編碼,規(guī)定所有的字符和符號最少由16位來表示(2個字節(jié)),即:2**16=65536,
注:此處說的是最少2個字節(jié),可能更多;
UTF-8,是對Unicode編碼的壓縮和優(yōu)化,他不再使用最少使用2個字節(jié),而是將所有的字符和符號進行分類:
ascii碼中的內(nèi)容用1個字節(jié)保存、歐洲的字符用2個字節(jié)保存,東亞的字符用3個字節(jié)保存......
所以,Python解釋器在加載.py文件中的代碼時,會對內(nèi)容進行編碼(默認ascii),如果是如下代碼的話:
報錯:ascii碼無法表示中文
#!/usr/bin/env python
print("你好,世界")
改正:應(yīng)該顯示的告訴Python解釋器,用什么編碼來執(zhí)行源代碼,即:
#!/usr/bin/env python
#-*-coding:utf-8 -*-
print ("你好,世界")
注釋
當行注釋:# 被注釋內(nèi)容
多行注釋:'''被注釋內(nèi)容'''
總結(jié)
- 上一篇: a标签隐藏真实地址_家庭影院布线非常杂乱
- 下一篇: 表空间的创建(学习笔记)