国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Python編碼對(duì)解決疑難問題的具體方法

開發(fā) 后端
針對(duì)一些難記的編碼,Python編碼會(huì)提供一些比較實(shí)用的方法,有針對(duì)性的進(jìn)行解答,或提供相關(guān)的方案對(duì)計(jì)算機(jī)編碼進(jìn)行規(guī)范。

初學(xué)Python編碼的相關(guān)人員經(jīng)常會(huì)遇到很多的編碼問題,常常會(huì)遇到很多的不解的編碼問題,即使記下因?yàn)榉爆崳矔?huì)忘記,以下介紹的是如何避免相關(guān)的情況。是我們?cè)谟?jì)算機(jī)的相關(guān)的應(yīng)用中變得更為流暢。

UNICODE:

使用2個(gè)甚至4個(gè)字節(jié)來編碼一個(gè)字符,因此可以將世界上所有的字符進(jìn)行統(tǒng)一.

Python:

標(biāo)準(zhǔn)的Python編碼只使用7個(gè)比特來表示一個(gè)字符,因此最多編碼128個(gè)字符。擴(kuò)充的 ANSCII 使用8個(gè)比特來表示一個(gè)字符,最多也只能編碼 256 個(gè)字符。

UNICODE:

使用2個(gè)甚至4個(gè)字節(jié)來編碼一個(gè)字符,因此可以將世界上所有的字符進(jìn)行統(tǒng)一編碼。

UTF:

UNICODE編碼轉(zhuǎn)換格式,就是用來指導(dǎo)如何將 unicode 編碼成適合文件存儲(chǔ)和網(wǎng)絡(luò)傳輸?shù)淖止?jié)序列的形式 (unicode -> str)。像其他的一些編碼方式 gb2312, gb18030, big5 和 UTF 的作用是一樣的,只是編碼方式不同。

這里面是這么幾句:

  1. "The items of a string are characters", "The items of a Unicode 
    object are Unicode code units", "The string data type is also 
    used to represent arrays of bytes, e.g., to hold data read from a file."  

一二句說明 str 和 unicode 的組成單元(item)是什么(因?yàn)樗鼈兺?sequence ) 。sequence 默認(rèn)的 __len__ 函數(shù)的返回值正是該序列組成單元的個(gè)數(shù)。這樣的話,len('abcd') == 4 和 len(u'我是中文') == 4 就很容易理解了。

第三句告訴我們像從文件輸入輸出的時(shí)候是用 str 來表示數(shù)據(jù)的數(shù)組。不止是文件操作,我想在網(wǎng)絡(luò)傳輸?shù)臅r(shí)候應(yīng)該也是這樣的。這就是為什么一個(gè)unicode 字符串在寫入文件或者在網(wǎng)絡(luò)上傳輸?shù)臅r(shí)候要進(jìn)行Python編碼的原因了。#t#

Python 編碼和解碼也就是 unicode 和 str 這兩種v形式的相互轉(zhuǎn)化。編碼是 unicode -> str,相反的,解碼就是 str -> unicode。下面剩下的問題就是確定何時(shí)需要進(jìn)行編碼或者解碼了,像一些庫是 unicode 版的,這樣我們?cè)趯⑦@些庫函數(shù)的返回值進(jìn)行傳輸或者寫入文件的時(shí)候就要考慮將它編碼成合適的類型。

關(guān)于文件開頭的"Python編碼v指示",也就是 # -*- coding: -*- 這個(gè)語句。Python 默認(rèn)腳本文件都是 ANSCII 編碼的,當(dāng)文件中有非 ANSCII 編碼范圍內(nèi)的字符的時(shí)候就要使用"編碼指示"來修正。關(guān)于 sys.defaultencoding,這個(gè)在解碼沒有明確指明解碼方式的時(shí)候使用。比如我有如下代碼:

  1. #! /usr/bin/env python     
  2. # -*- coding: utf-8 -*-   
  3.  

s = '中文' # 注意這里的 str 是 str 類型的,而不是 unicode   s.encode('gb18030') 這句代碼將 s 重新編碼為 gb18030 的格式,即進(jìn)行 unicode -> str 的轉(zhuǎn)換。因?yàn)?s 本身就是 str 類型的,因此 Python 會(huì)自動(dòng)的先將 s 解碼為 unicode ,然后再編碼成 gb18030。

因?yàn)榻獯a是python自動(dòng)進(jìn)行的,我們沒有指明解碼方 式,python 就會(huì)使用 sys.defaultencoding 指明的方式來解碼。很多情況下 sys.defaultencoding 是 ANSCII,如果 s 不是這個(gè)類型就會(huì)出錯(cuò)。 拿上面的情況來說,我的 sys.defaultencoding 是 anscii,而 s 的編碼方式和文件的編碼方式一致,是 utf8 的,所以出錯(cuò)了:

UNICODE編碼轉(zhuǎn)換格式,就是用來指導(dǎo)如何將 unicode 編碼成適合文件存儲(chǔ)和網(wǎng)絡(luò)傳輸?shù)淖止?jié)序列的形式 (unicode -> str)。像其他的一些Python編碼b2312, gb18030, big5 和 UTF 的作用是一樣的,只是編碼方式不同。#p#

Python編碼有兩種數(shù)據(jù)模型來支持字符串這種數(shù)據(jù)類型,一種是 str,另外一種是 unicode ,它們都是 sequence 的派生類型,這個(gè)可以參考 Python Language Ref 中的描述:

這里面是這么幾句:

  1. UnicodeDecodeError: 'ascii' codec   
  2. can't decode byte 0xe4 in position  
  3.    0: ordinal not in range(128)   
  4.  對(duì)于這種情況,我們有兩種方法來改正錯(cuò)誤:  
  5. 一是明確的指示出 s 的編碼方式#!  
  6.  /usr/bin/env python    
  7.  # -*- coding: utf-8 -*-   s =  
  8.  '中文'   s.decode('utf-8').  
  9. encode('gb18030') 最后更改   
  10. sys.defaultencoding 為文件的  
  11. Python編碼即可。  
  12.  

UTF:

一二句說明 str 和 unicode 的組成單元(item)是什么(因?yàn)樗鼈兺?sequence ) 。sequence 默認(rèn)的 __len__ 函數(shù)的返回值正是該序列組成單元的個(gè)數(shù)。這樣的話,len('abcd') == 4 和 len(u'我是中文') == 4 就很容易理解了。

第三句告訴我們像從文件輸入輸出的時(shí)候是用 str 來表示數(shù)據(jù)的數(shù)組。不止是文件操作,我想在網(wǎng)絡(luò)傳輸?shù)臅r(shí)候應(yīng)該也是這樣的。這就是為什么一個(gè)unicode 字符串在寫入文件或者在網(wǎng)絡(luò)上傳輸?shù)臅r(shí)候要進(jìn)行編碼的原因了。

Python編碼和解碼也就是 unicode 和 str 這兩種形式的相互轉(zhuǎn)化。編碼是 unicode -> str,相反的,解碼就是 str -> unicode。下面剩下的問題就是確定何時(shí)需要進(jìn)行編碼或者解碼了,像一些庫是 unicode 版的,這樣我們?cè)趯⑦@些庫函數(shù)的返回值進(jìn)行傳輸或者寫入文件的時(shí)候就要考慮Python編碼成合適的類型。

關(guān)于文件開頭的"編碼指示",也就是 # -*- coding: -*- 這個(gè)語句。Python 默認(rèn)腳本文件都是 ANSCII 編碼的,當(dāng)文件中有非 ANSCII 編碼范圍內(nèi)的字符的時(shí)候就要使用"編碼指示"來修正。關(guān)于 sys.defaultencoding,這個(gè)在解碼沒有明確指明解碼方式的時(shí)候使用。比如我有如下代碼:

  1. #! /usr/bin/env python   
  2. # -*- coding: utf-8 -*-   
  3.  

s = '中文' # 注意這里的 str 是 str 類型的,而不是 unicode   s.encode('gb18030') 這句代碼將 s 重新編碼為 gb18030 的格式,即進(jìn)行 unicode -> str 的轉(zhuǎn)換。因?yàn)?s 本身就是 str 類型的,因此 Python 會(huì)自動(dòng)的先將 s 解碼為 unicode ,然后再編碼成 gb18030。

因?yàn)榻獯a是python自動(dòng)進(jìn)行的,我們沒有指明解碼方 式,Python編碼就會(huì)使用 sys.defaultencoding 指明的方式來解碼。很多情況下 sys.defaultencoding 是 ANSCII,如果 s 不是這個(gè)類型就會(huì)出錯(cuò)。 拿上面的情況來說,我的 sys.defaultencoding 是 anscii,而 s 的編碼方式和文件的編碼方式一致,是 utf8 的,所以出錯(cuò)了: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position   0: ordinal not in range(128) 

對(duì)于這種情況,我們有兩種方法來改正錯(cuò)誤: 一是明確的指示出 s 的編碼方式

  1. #! /usr/bin/env python     
  2. # -*- coding: utf-8 -*-     
  3. s = '中文'    
  4. s.decode('utf-8').encode('gb18030')   

最后更改 sys.defaultencoding 為文件的Python編碼即可。

責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2012-05-04 09:18:46

2017-04-18 22:50:10

OSPF疑難問題

2009-06-18 08:46:56

微軟Windows 7操作系統(tǒng)

2011-05-06 14:05:22

打印機(jī)照片打印

2010-07-27 11:09:43

設(shè)置NFS

2010-01-26 10:13:45

學(xué)習(xí)C++

2009-12-25 10:59:08

WPF Timer

2009-12-23 08:53:56

Windows 7遠(yuǎn)程協(xié)助

2010-07-21 14:33:01

刪除telnet

2010-07-05 14:41:21

SQL Server數(shù)

2023-05-29 18:33:30

得物H5容器

2011-04-01 14:05:09

SQL數(shù)據(jù)庫

2010-03-11 17:16:48

Python平臺(tái)

2011-04-01 13:34:12

zabbix

2009-12-03 14:43:46

phpMyAdmin配

2011-08-03 13:25:19

布線系統(tǒng)規(guī)劃

2011-04-26 16:39:30

照片打印機(jī)

2016-03-22 15:05:00

定性移動(dòng)數(shù)據(jù)開源

2012-05-14 11:48:18

MSinfo32Windows Ser

2009-12-24 18:03:35

WPF線程渲染
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91精品久久久久久久久久久久久久| 日韩一区二区三区在线播放| 欧美人与动牲性行为| 中文字幕在线观看一区| 欧美第一淫aaasss性| 蜜臀av.com| 日韩福利电影在线观看| 91社在线播放| 波多野结衣在线观看| 精品国产一区二区三区小蝌蚪| 亚洲人午夜精品天堂一二香蕉| 在线观看视频亚洲| 日韩一区二区三区精品| 成人短视频在线观看免费| 日本在线视频www鲁啊鲁| 国产精选一区| 欧美一区二区观看视频| 精品亚洲欧美日韩| 偷拍自拍在线看| 国产成人三级在线观看| 最近2019中文字幕第三页视频| 欧美性久久久久| 久久精品三级| 高清国产在线一区| 性欧美高清come| 免费看日韩精品| 欧美一级大片视频| 国产美女免费观看| 久久婷婷一区| 国产xxx69麻豆国语对白| 亚洲欧洲一区二区三区久久| 欧美三级精品| 欧美久久久久久蜜桃| 亚洲精品一区二区三| 99热精品在线| 国产成人精品在线| 综合色一区二区| 国产成人精品电影久久久| 最新国产在线观看| 97se亚洲国产综合在线| 2021国产精品视频| av磁力番号网| gogo高清在线播放免费| 久久久久久电影| 久久久国产精华液999999| 成人动漫一区二区| 久久99亚洲网美利坚合众国| 中国一级大黄大黄大色毛片| 亚洲性线免费观看视频成熟| 国产亚洲高清一区| 日韩视频免费中文字幕| 噜噜噜躁狠狠躁狠狠精品视频 | 96sao精品视频在线观看| 一本到12不卡视频在线dvd| 官网99热精品| 91欧美日韩| 久久久av网站| 理论片在线观看理伦片| av网站免费线看精品| 亚洲中文字幕无码av永久| 中文字幕乱码一区二区免费| 日本免费一二区| 亚洲国产日韩综合久久精品| 22288色视频在线观看| 在线区一区二视频| 国产丝袜精品丝袜| 亚洲另类图片色| 欧美色图五月天| 欧美日韩国产综合在线| 一区二区三区免费看视频| 欧美爱爱视频免费看| 国产精品二区不卡| 国产精品久久久久久久久久久久久| 亚洲啪啪91| 青青青免费在线| 一本一道综合狠狠老| 日本在线观看高清完整版| 欧美性感一区二区三区| 成人av综合网| 麻豆一区区三区四区产品精品蜜桃| 国产iv一区二区三区| 欧美成人精品三级网站| 成人免费毛片播放| 国产视频观看一区| 天天做天天摸天天爽国产一区| 国产一区二区三区朝在线观看| 精品日韩中文字幕| 国产亚洲成av人在线观看导航| 日本我和搜子同居的日子高清在线 | 亚洲国产成人不卡| 一区在线观看免费| 中国色在线日|韩| 国产精品三级久久久久久电影| 精品一区二区在线看| 在线免费色视频| 色爱av美腿丝袜综合粉嫩av| 亚洲大胆在线| 性欧美videossex精品| 亚洲成人网在线| 女人av一区| 99久热re在线精彩视频| 超碰日本道色综合久久综合 | 91精品久久久久久久蜜月| 免费精品视频一区二区三区| 久久99国产精品麻豆| 国产精品美乳在线观看| 国产乱人伦精品一区二区在线观看| 中文字幕视频在线观看| 久久欧美在线电影| 成人午夜免费视频| 51av在线| 日本视频精品一区| 欧美日韩综合在线免费观看| 日韩精品一区二区三区免费观看| 已婚少妇美妙人妻系列| 亚洲欧美综合另类中字| 日韩av一区二| av在线资源站| 国产成人涩涩涩视频在线观看| 99久久免费视频.com| 麻豆视频在线观看免费网站黄| 精品国产一区二区三区麻豆免费观看完整版 | 欧美精品久久久久久久久25p| 在线观看日韩av| 狠狠色丁香久久婷婷综| 美女av在线播放| 99久re热视频这里只有精品6| 一区二区久久久久| 群体交乱之放荡娇妻一区二区| 日韩亚洲在线视频| 欧美日韩成人免费| 久久综合久久综合亚洲| 日本亚洲欧洲无免费码在线| 人妻无码一区二区三区四区| 精品一区二区三区三区| 狠狠色丁香久久婷婷综合丁香| 午夜不卡影院| 屁屁影院ccyy国产第一页| 中国人与牲禽动交精品| 高清av一区二区| 国产精品3区| 超碰在线公开97| 欧美一级淫片videoshd| 亚洲男人天堂av| 日韩欧美字幕| 国产亚洲依依| 久久99九九| 精品国产乱码久久久久久1区2区| 蜜乳av一区二区三区| 一区二区三区四区日本视频| 可以在线看黄的网站| 亚洲一区www| av网站一区二区三区| 9l视频自拍蝌蚪9l视频成人| 欧美r片在线| 亚洲xxx自由成熟| 欧美一区二区三区在线电影| 国产一区二区三区免费在线观看| 福利一区二区免费视频| 国产成人艳妇aa视频在线| 久久婷婷国产麻豆91天堂| 国产精品天美传媒沈樵| 99久久九九| 国产又色又爽又黄刺激在线视频| 久久久久久久久久伊人| 久久久免费av| 欧美性xxxxxx| 激情综合色综合久久综合| 涩爱av色老久久精品偷偷鲁| 午夜在线观看视频网站| 欧美午夜免费| 久久视频在线免费观看| 一区二区三区成人| 欧美一级二区| 国产成人免费精品| 国产在线制服美女| 视频一区三区| 午夜精品久久久久久久99黑人| 色噜噜狠狠成人中文综合| 久久精品99国产精品| 欧美顶级毛片在线播放| 精品成人私密视频| 91成人理论电影| 91精品福利在线一区二区三区| 久久精品中文| 亚洲精品在线影院| 激情校园亚洲图片| 韩国精品一区二区三区六区色诱| 亚洲免费影视第一页| 中文久久乱码一区二区| 欧美破处大片在线视频| 欧美黑人粗大| 黄色大秀av大片| 青青草国产精品| 久久久精品欧美| 亚洲一区二区精品久久av| 免费黄网站欧美| 欧美男同视频网| 女人高潮被爽到呻吟在线观看 | 亚洲色成人www永久在线观看|