pythoncoding
『壹』 python中#coding:gbk有什麼用
它是一種編碼格式,簡單說明是:文件說明指令來確定不同的環境進行不同的解析,與代碼有關,但與代碼的內容無直接關聯。
其中編碼格式有多種,例如常用的還有:UTF-8
GBK即「國標」、「擴展」漢語拼音的第一個字母,英文名稱:Chinese Internal Code Specification。GBK是漢字編碼標准之一,中華人民共和國全國信息技術標准化技術委員會1995年12月1日制訂,國家技術監督局標准化司、電子工業部科技與質量監督司1995年12月15日聯合以技監標函1995 229號文件的形式,將它確定為技術規范指導性文件。
俗說的話,編碼格式指定不明確的話,一般可能會有亂碼出現。
『貳』 python有哪幾種編碼方式
第一種:ASCII碼。是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,它是現今最通用的單位元組編碼系統,並等同於國際標准IS/IEC
646。
由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機李,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母a的編碼是97,後128個稱為擴展ASCII碼。
第二種:GBK和GB2312。能在計算機中顯示中文字元是至關重要的,然而ASCII表裡一個偏旁部首都沒有,所以我們需要一個關於中文和數字對應的關系表,一個位元組只能最多表示256個字元,用處理中文顯然一個位元組是不夠的,所以我們需要採用兩個位元組來表示,所以中國制定了GB2312編碼,用來將中文編寫進去。
第三種:Unicode。因為各個國家都有一套自己的編碼,所以無法避免沖突,因此Unicode誕生了。它可以把所有語言都統一到一套編碼里,這樣就不會存在亂碼問題了,現代操作系統和大多數編程語言都直接支持Unicode。
第四種:UFT-8。基於節約的原則,出現了把Unicode編碼轉化為可變長編碼的UTF-8編碼。而UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文字母被編碼成一個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組,如果你要傳輸的文本包含大量英文字元,用UTF-8編碼就能節省空間。
『叄』 Python 編碼轉換與中文處理
python 中的 unicode 是讓人很困惑、比較難以理解的問題. 這篇文章 寫的比較好, utf-8是 unicode的一種實現方式,unicode、gbk、gb2312是編碼字元集.
Python 默認腳本文件都是 ANSCII 編碼的,當文件 中有非 ANSCII 編碼范圍內的字元的時候就要使用" 編碼指示 "來修正一個 mole 的定義中,如果.py文件中包含中文字元(嚴格的說是含有非anscii字元),則需要在第一行或第二行指定編碼聲明: # -*- coding=utf-8 -*- 或者 #coding=utf-8
其他的編碼如:gbk、gb2312也可以;否則會出現:
先說一下python中的字元串類型,在python中有兩種字元串類型,分別是 str 和 unicode ,他們都是basestring的派生類;
在str的文檔中有這樣的一句話:
也就是說在讀取一個文件的內容,或者從網路上讀取到內容時,保持的對象為str類型;如果想把一個str轉換成特定編碼類型,需要把str轉為Unicode,然後從unicode轉為特定的編碼類型如:utf-8、gb2312等。
unicode 轉為 gb2312,utf-8等,使用 encode(encoding)
utf-8,GBK轉換為 unicode 使用 unicode(s,encoding) 或者 s.decode(encoding)
普通的 str 轉為 unicode,
如果直接執行s.encode('gb2312')會發生什麼?
這里會發生一個異常:Python 會自動的先將 s 解碼為 unicode ,然後再編碼成 gb2312。因為解碼是python自動進行的,我們沒有指明解碼方式,python 就會使用 sys.defaultencoding 指明的方式來解碼。很多情況下 sys.defaultencoding 是 ANSCII,如果 s 不是這個類型就會出錯。
拿上面的情況來說,我的 sys.defaultencoding 是 anscii,而 s 的編碼方式和文件的編碼方式一致,是 utf8 的,所以出錯了:
對於這種情況,我們有兩種方法來改正錯誤:
s = '中文'
s.decode('utf-8').encode('gb2312') ```
import sys
reload(sys) # Python2.5 初始化後會刪除 sys.setdefaultencoding 這個方法,我們需要重新載入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb2312')
print open("Test.txt").read()
import codecs
print open("Test.txt").read().decode("utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
print open("Test.txt").read().decode("utf-8")
UnicodeEncodeError: 'gbk' codec can't encode character u'ufeff' in position 0: illegal multibyte sequence
import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
print data.decode("utf-8")
s = "中文"
print unicode(s, "utf-8")
Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
s = unicode(s, "utf-8")
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data
s = "中文"
print unicode(s, "gbk")
s = "中文"
print unicode(s, "cp936")
『肆』 Python 源程序編碼注意事項
默認情況下,Python 源文件是 UTF-8 編碼。在此編碼下,全世界大多數語言的字元可以同時用在字元串、標識符和注釋中 — 盡管 Python 標准庫僅使用 ASCII 字元作為標識符,這只是任何可移植代碼應該遵守的約定。如果要正確的顯示所有的字元,你的編輯器必須能識別出文件是 UTF-8 編碼,並且它使用的字體能支持文件中所有的字元。
你也可以為源文件制定不同的字元編碼。為此,在 #! 行(首行)後插入至少一行特殊的注釋行來定義源文件的編碼:
# -*- coding: encoding -*-
通過此聲明,源文件中所有的東西都會被當作用 encoding 指代的 UTF-8 編碼對待。在 Python 庫參考手冊 codecs 一節中你可以找到一張可用的編碼列表。
例如,如果你的編輯器不支持 UTF-8 編碼的文件,但支持像 Windows-1252 的其他一些編碼,你可以定義:
# -*- coding: cp-1252 -*-
這樣就可以在源文件中使用 Windows-1252 字元集中的所有字元了。這個特殊的編碼注釋必須在文件中的 第一或第二 行定義。
『伍』 如何辨認python的編碼格式是unicode
Python文件里開頭有coding:utf-8,則說明這個Python文件是Unicode編碼。
在Python3中字元串是默認使用Unicode的,python2.x則得用u來表示它是Unicode字元串,如a=u「abcdefg」。type函數可以驗證
『陸』 為什麼python中,程序開始都要敲入「#-*-coding:UTF-8-*-」這個有什麼作用呢
PY文件當中是不支持中文的,即使你輸入的注釋是中文也不行,為了解決這個問題,就需要把文件編碼類型改為UTF-8的類型,核毀輸入這個代碼就可以讓PY源文件裡面有中文了。遲信
建議你寫代碼改旦備之前都把這句話加上,因為不管是注釋還是彈出消息提示,免不了的要輸入中文,所以這個基本是必須的。
『柒』 為什麼我的Python3加註釋也要用#coding:utf-8
#coding:utf-8
如果沒有給出其他編碼提示,Python將默認為ASCII作為標准編碼
另外 完整的Python源文件應該使用單個編碼。不允許嵌入不同編碼的數據,並且在編譯Python源代碼期間將導致解碼錯誤。
『捌』 怎麼在Python里使用UTF-8編碼
一個完整的開頭應該是這個樣子的:
#!
usr/bin/python
#coding=utf-8
//這句是使用utf8編碼方式方法,
可以單獨加入python頭使用。
#
-*-
coding:cp936
-*-
import
sys
reload(sys)
sys.setdefaultencoding('utf-8')
sys.path.append("../pythonLib/")
import
os,
string
import
json
import
time
from
time
import
*
希望可以幫到你。
『玖』 如何設置python的編碼格式為utf-8
python的編碼格式?
#coding=utf-8
這是文檔編碼
import sys
sys.setdefaultencoding("utf-8")
這是設置默認編碼方式為utf-8
xx.encode("utf-8")
這是字元串編碼操作
import codecs
codecs.open(xx,'r','utf-8"),這是文件編碼讀取方式
『拾』 Python3 不用在開頭聲明#coding=utf-8也能中文注釋啊
#coding=utf-8是告訴python文件的編搏扮碼方改銀滑式,跟你用注釋沒啥關系,跟中文輸出是核臘否正常有關。你把文件存成gb2312然後開頭#coding=utf-8試試print一下中文看看出不出問題