Python_中文的處理、編碼轉換(py2和py3的簡單比較)


一、編碼轉換py2和py3對中文的處理

  py2:

    1 文件要存為utf-8

    2 文件第一行聲明為:#encoding=utf-8

        #coding=utf-8

        #coding:utf-8

        #_*_coding:UTF-8_*_

  3 所有的中文前面加u,表示unicode 

  py3:

    1 文件要存為utf-8

    2 聲明可以不加,加上也沒問題

    3 中文前面不用加u,加了也沒事。

 不用utf-8的時候,需要第一行聲明(如:#encoding = gbk

二、編碼轉換

  1、說明py -2

    py2:utf-8,文件第一行也聲明為utf-8
    str1="我們"   類型:str
    str1.decode()  默認是:ascii
    str1.decode("utf-8")
    str1.decode("utf-8")==u"我們"
    str1.decode("utf-8").encode("utf-8")==str1


    py2:ansi,文件第一行也聲明為gbk
    str1="我們"   類型:str
    str1.decode()  默認是:ascii
    str1.decode("gbk")==u"我們"
    str1.decode("gbk").encode("gbk")== str1

 

 

2utf-8:

#encoding=utf-8

s = "我們"
print(type(s))
print(s.decode("utf-8"))
print(s.decode("utf-8")==u"我們")
print(s.decode("utf-8").encode("utf-8")==s)

 非交互模式下運行以上代碼

 

3Ansi

#encoding=gbk

s = "我們"
print(type(s))
print(s.decode("gbk"))
print(s.decode("gbk")==u"我們")
print(s.decode("gbk").encode("gbk")==s)

  非交互模式下運行以上代碼

 

4py -3py-2轉碼的區別說明

py2:str類型等價於py3bytes類型
py2:str類型例子: s ="中國"
py2Unicode類型例子:s =u"中國"

p3:str類型等價於py2unicode類型
py3 str類型:s = "中國"
py3 byte類型: s= "中國".encode("utf-8")

encode:不管是2還是3,只能對unicode對象來用
py2:unicode類型的對象,轉換為str類型
py3:將str類型的對象,轉換為了bytes類型

 

cmd默認是gbk編碼

py2默認是ascii編碼

計算機內存里是unicode編碼

存儲格式可為gbk(ansi)utf-8等等

涉及到存儲傳輸的byte

 

只有在unicode下才能將utf-8與gbk互轉
------------------------------------------------------------
py3時:
a="中國a=u"中國是一個意思,都表示str類型unicode存儲類型
c=b"good" 表示str類型bytes存儲類型

py2時:
a="中國a=b"中國"  是一個意思,表示str類型bytes存儲類型
a=u"中國"  表示str類型unicode存儲類型

 

 Python3默認為“utf-8”

>>> import sys
>>> sys.getdefaultencoding()#查看默認編碼方式 'utf-8'
>>> "我們".encode()
b'\xe6\x88\x91\xe4\xbb\xac'
>>> "我們".encode().decode()
'我們'

 

>>> "我們".encode("utf-8").decode("utf-8")
'我們'


免責聲明!

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



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