Python編碼問題整理紀(jì)錄

在開發(fā)Python程序的過程中罗岖,會涉及到三個方面的編碼:

? ? ? 1、Python程序文件的編碼

? ? ? 2膳凝、Python程序運行時環(huán)境(IDE)的編碼

? ? ? 3控妻、Python程序讀取外部文件迂烁、網(wǎng)頁的編碼



1、Python程序文件的編碼

? ? ? 例如:

? ? ? Python2自帶的IDE递鹉,當(dāng)創(chuàng)建了一個文件保存的時候提示:

圖片發(fā)自簡書App

? ? 這是因為Python2編輯器默認(rèn)的編碼是ASCII盟步,它是無法識別中文的,所以會彈出這樣的提示躏结。這也是我們在大多情況下寫python2程序的時候習(xí)慣在程序的第一行加上:#coding=utf-8

? ? ? 其實却盘,這里的編碼文件是很容易解決的。


2媳拴、Python程序運行時環(huán)境(IDE)的編碼

? ? ? 執(zhí)行下面的一段程序黄橘。

? ? ? #coding=utf-8from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.baidu.com") # 返回百度頁面底部備案信息 text = driver.find_element_by_id("cp").text print(text) driver.close()

? ? ? 在windows cmd下執(zhí)行:


圖片發(fā)自簡書App

? ? ? 我們要獲取的信息是:

? ? ? ?2015 Baidu 使用百度前必讀 意見反饋 京ICP證030173號

? ? ? Windows cmd 用的是cp936,也就是中文的GB2312屈溉,在GBK的字符集里沒有“?”旬陡,這就導(dǎo)致通過GBK解析的時候出現(xiàn)編碼問題。

? ? ? 這就像你在翻譯英文的時候语婴,出現(xiàn)了一個單詞描孟,這個單詞你查遍了牛津大詞典都沒找到對應(yīng)的含義解釋,那么自然是會有問題的砰左。

? ? ? 那假設(shè)匿醒,我還就想在cmd下執(zhí)行這個python程序了,那么可以去修改cmd的默認(rèn)編碼類型為utf-8缠导,對應(yīng)的編碼為CHCP 65001(utf-8)廉羔。在cmd 下輸入:chcp 65001 命令回車。

圖片發(fā)自簡書App

? ? 然后僻造,修改cmd的字體為“Lucida Console”憋他,再來執(zhí)行程序就可以被正確輸出了。


圖片發(fā)自簡書App


3髓削、Python程序讀取外部文件竹挡、網(wǎng)頁的編碼




認(rèn)識常見編碼

? ? ? GB2312是中國規(guī)定的漢字編碼,也可以說是簡體中文的字符集編碼

? ? ? GBK 是 GB2312的擴(kuò)展 ,除了兼容GB2312外立膛,它還能顯示繁體中文揪罕,還有日文的假名

? ? ? cp936:中文本地系統(tǒng)是Windows中的cmd,默認(rèn)codepage是CP936宝泵,cp936就是指系統(tǒng)里第936號編碼格式好啰,即GB2312的編碼。

? ? ? (當(dāng)然有其它編碼格式:cp950 繁體中文儿奶、cp932 日語框往、cp1250 中歐語言。闯捎。椰弊。)

Unicode是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案嘁酿。UTF-8、UTF-16男应、UTF-32都是將數(shù)字轉(zhuǎn)換到程序數(shù)據(jù)的編碼方案闹司。

? ? ? UTF-8 (8-bit Unicode Transformation Format)是最流行的一種對 Unicode 進(jìn)行傳播和存儲的編碼方式。它用不同的 bytes 來表示每一個代碼點沐飘。ASCII 字符每個只需要用一個 byte 游桩,與 ASCII 的編碼是一樣的。所以說 ASCII 是 UTF-8 的一個子集耐朴。

代碼頁是字符集編碼的別名借卧,也有人稱"內(nèi)碼表"。早期筛峭,代碼頁是IBM稱呼電腦BIOS本身支持的字符集編碼的名稱铐刘。當(dāng)時通用的操作系統(tǒng)都是命令行界面系統(tǒng),這些操作系統(tǒng)直接使用BIOS供應(yīng)的VGA功能來顯示字符影晓,操作系統(tǒng)的編碼支持也就依靠BIOS的編碼×常現(xiàn)在這BIOS代碼頁被稱為OEM代碼頁。圖形操作系統(tǒng)解決了此問題挂签,圖形操作系統(tǒng)使用自己字符呈現(xiàn)引擎可以支持很多不同的字符集編碼疤祭。

  早期IBM和微軟內(nèi)部使用特別數(shù)字來標(biāo)記這些編碼,其實大多的這些編碼已經(jīng)有自己的名稱了饵婆。雖然圖形操作系統(tǒng)可以支持很多編碼勺馆,很多微軟程序還使用這些數(shù)字來點名某編碼。

下表列出了所有支持的代碼頁及其國家(地區(qū))或者語言:

代碼頁? ? ? 國家(地區(qū))或語言

437? ? ? ? ? 美國

708? ? ? ? ? 阿拉伯文(ASMO 708)

720? ? ? ? ? 阿拉伯文(DOS)

850? ? ? ? ? 多語言(拉丁文 I)

852? ? ? ? ? 中歐(DOS) - 斯拉夫語(拉丁文 II)

855? ? ? ? ? 西里爾文(俄語)

857? ? ? ? ? 土耳其語

860? ? ? ? ? 葡萄牙語

861? ? ? ? ? 冰島語

862? ? ? ? ? 希伯來文(DOS)

863? ? ? ? ? 加拿大 - 法語

865? ? ? ? ? 日耳曼語

866? ? ? ? ? 俄語 - 西里爾文(DOS)

869? ? ? ? ? 現(xiàn)代希臘語

874? ? ? ? ? 泰文(Windows)

932? ? ? ? ? 日文(Shift-JIS)

936? ? ? ? ? 中國 - 簡體中文(GB2312)

949? ? ? ? ? 韓文

950? ? ? ? ? 繁體中文(Big5)

1200? ? ? ? Unicode? ? ? ?

1201? ? ? ? Unicode (Big-Endian)

1250? ? ? ? 中歐(Windows)

1251? ? ? ? 西里爾文(Windows)

1252? ? ? ? 西歐(Windows)

1253? ? ? ? 希臘文(Windows)

1254? ? ? ? 土耳其文(Windows)

1255? ? ? ? 希伯來文(Windows)

1256? ? ? ? 阿拉伯文(Windows)

1257? ? ? ? 波羅的海文(Windows)

1258? ? ? ? 越南文(Windows)

20866? ? ? ? 西里爾文(KOI8-R)

21866? ? ? ? 西里爾文(KOI8-U)

28592? ? ? ? 中歐(ISO)

28593? ? ? ? 拉丁文 3 (ISO)

28594? ? ? ? 波羅的海文(ISO)

28595? ? ? ? 西里爾文(ISO)

28596? ? ? ? 阿拉伯文(ISO)

28597? ? ? ? 希臘文(ISO)

28598? ? ? ? 希伯來文(ISO-Visual)

38598? ? ? ? 希伯來文(ISO-Logical)

50000? ? ? ? 用戶定義的

50001? ? ? ? 自動選擇

50220? ? ? ? 日文(JIS)

50221? ? ? ? 日文(JIS-允許一個字節(jié)的片假名)

50222? ? ? ? 日文(JIS-允許一個字節(jié)的片假名 - SO/SI)

50225? ? ? ? 韓文(ISO)

50932? ? ? ? 日文(自動選擇)

50949? ? ? ? 韓文(自動選擇)

51932? ? ? ? 日文(EUC)

51949? ? ? ? 韓文(EUC)

52936? ? ? ? 簡體中文(HZ)

65000? ? ? ? Unicode (UTF-7)

65001? ? ? ? Unicode (UTF-8)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侨核,一起剝皮案震驚了整個濱河市草穆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搓译,老刑警劉巖悲柱,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侥衬,居然都是意外死亡诗祸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門轴总,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人博个,你說我怎么就攤上這事怀樟。” “怎么了盆佣?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵往堡,是天一觀的道長械荷。 經(jīng)常有香客問我,道長虑灰,這世上最難降的妖魔是什么吨瞎? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮穆咐,結(jié)果婚禮上颤诀,老公的妹妹穿的比我還像新娘。我一直安慰自己对湃,他們只是感情好崖叫,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拍柒,像睡著了一般心傀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拆讯,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天脂男,我揣著相機(jī)與錄音,去河邊找鬼种呐。 笑死疆液,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的陕贮。 我是一名探鬼主播堕油,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肮之!你這毒婦竟也來了掉缺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤戈擒,失蹤者是張志新(化名)和其女友劉穎眶明,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筐高,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡搜囱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了柑土。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜀肘。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖稽屏,靈堂內(nèi)的尸體忽然破棺而出扮宠,到底是詐尸還是另有隱情,我是刑警寧澤狐榔,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布坛增,位于F島的核電站获雕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏收捣。R本人自食惡果不足惜届案,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罢艾。 院中可真熱鬧楣颠,春花似錦、人聲如沸昆婿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仓蛆。三九已至睁冬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間看疙,已是汗流浹背豆拨。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留能庆,地道東北人施禾。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像搁胆,于是被迫代替她去往敵國和親弥搞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容