python編碼格式


python編碼總結:

1).首先python有兩種格式的字符串,str和unicode,其中unicode相當於字節碼那樣,可以跨平台使用。

str轉化為unicode可以通過unicode(),u,str.decode三種方式

unicode轉化為str,如果有中文的話,一般通過encode的方式

2).如果代碼中有中文的話,我們一般會添加 "# coding=utf-8",這個是什么作用呢,一般如下:

  1. 如果代碼中有中文注釋,就需要此聲明
  2. 比較高級的編輯器(比如我的emacs),會根據頭部聲明,將此作為代碼文件的格式。
  3. 程序會通過頭部聲明,解碼初始化 u”人生苦短”,這樣的unicode對象,(所以頭部聲明和代碼的存儲格式要一致

    所以,當我們填上編碼頭的時候,使用s="中文",實際上type(s)是一個str,是已經將unicode以utf-8格式編碼成str。

  其次,如果我們在代碼中使用s=u'中文',相當於將str以utf-8解碼成unicode.

 1 # coding=utf-8
 2 __author__ = 'lenovo'
 3 
 4 a='中文'
 5 print a,type(a)
 6 
 7 a2=unicode(a,"utf-8")
 8 print a2,type(a2)
 9 
10 a3=u'中文'
11 print a3,type(a3)

這樣的輸出如下,說明聲明頭的作用一方面是自動將unicode轉化為utf-8,另一方面是使用u的時候指定了utf-8:

 

3)如果在unicode上面再unicode的話,實際上並沒有起到效果

1 a='中文'
2 a2=unicode(a,"utf-8")
3 print a2,type(a2)
4 
5 a3=unicode(a2)
6 print a3,type(a3)

4)u,unicode()和str.decode等價,都可以將str轉化成unicode。但是decode不能像unicode()那樣連續調用

1 a='中文'
2 a2=unicode(a,"utf-8")
3 a3=a.decode("utf-8")
4 print a2,type(a2)
5 print a3,type(a3)

5)當使用map存儲的key為中文的時候,可以str轉化成unicode才行,這樣就可以跨平台

1 a='中文'
2 map={}
3 map[a.decode('utf-8')]=3
4 map[unicode('t')]=4
5 print map
6 print map[u'中文']
7 print map['t']

6)一個需要注意的點就是ascii碼的話,unicode和str等價,也就是unicode('t')=='t'

7)文件操作時,open(filename),要求文件的格式和編碼頭一致,這樣讀取后是str類型

如果不一致,可以調用io.open()並且指定編碼,這樣讀取后是unicode


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM