日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中对字符串进行编码_Python 中的字符串编码

發布時間:2025/3/15 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中对字符串进行编码_Python 中的字符串编码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對Python字符編碼一直沒搞明白,今天看《Python參考手冊》再次遇到這個問題,重新整理下

Python中字符串字面量用于指定一個字符序列,其定義方法是把文本放入單引號('),雙引號(")或者三引號('''或""")中。

Python2中,字符串字面量對應于8位字符或者面向字節的數據。關于這些字符串有一個很重要的限制,即它們無法完全支持國際字符集和Unicode。為了解決這種限制問題,Python2對Unicode數據用了單獨的字符串類型。要輸入Unicode字符串字面量,要在第一個引號前面加上前綴"u"。

Python3中,不必加這個前綴(如果加上會算作語法錯誤),因為所有字符串已是Unicode編碼。如果使用-U選項運行解釋器,Python2將會模擬這種行為(即所有字符串字面量將被作為Unicode字符串對待,u前綴可以省略)

Python2 Python3 str類型比較

Python2

type("str") #type(b"str") #type(u"str") #

Python3

type("str") #

type(b"str") #

type(u"str") #

Python2對Unicode數據用了單獨的字符串類型unicode.

要將一個已編碼的字節字符串指定為字面量,在第一個引號前面加上"b",這樣才能從字面上創建一個單字節的字符串。字節字面量在大多數程序中極少使用,因為這種語法直到Python2.6才出現,而且在次版本中,字節字面量和普通字符串之間沒有差距。但在Python3中,字節字面量變成了與普通字符串不同的新的bytes類型數據。(從上面的代碼可以看出)

Python2中的編碼:

#!/usr/bin/python#-*- coding:UTF-8 -*- s='代碼' #python2 會自動將字符串轉換為合適編碼的字節字符串,自動轉換為UTF-8編碼的字節字符串?'\xe4\xbb\xa3\xe7\xa0\x81'u=u'代碼' #顯式指定字符串類型為unicode類型, 此類型字符串沒有編碼,保存的是字符在unicode字符集中的代碼點(序號) u'\u4ee3\u7801' print len(s) #6 print len(u) #2 print repr(s) #'\xe4\xbb\xa3\xe7\xa0\x81' print repr(u) #u'\u4ee3\u7801' #print s.encode('utf-8') #UnicodeDecodeError: 'ascii' codec can't decode                #python2 已經自動將其轉化為utf-8類型編碼,因此再次編碼會報錯 print repr(s.decode('utf-8')) #u'\u4ee3\u7801'                  #python2 可以正常解碼,返回的字符串類是無編碼的unicode類型 print repr(u.encode('utf-8')) #'\xe4\xbb\xa3\xe7\xa0\x81'#print repr(u.decode('utf-8')) #UnicodeEncodeError: 'ascii' codec can't encode characters b=b'代碼' #已被python2轉換為utf-8編碼,因此已為字節字符串 print len(b) #6 print repr(b) #'\xe4\xbb\xa3\xe7\xa0\x81 print repr(b.decode('utf-8')) #u'\u4ee3\u7801'#print repr(b.encode('utf-8')) #UnicodeDecodeError: 'ascii' codec can't decode byte

嚴格意義上說,str其實是字節串(Python2中,字符串字面量對應于8位字符或者面向字節的數據),它是unicode經過編碼后的字節組成的序列;對UTF-8編碼的str'代碼'使用len()函數時,結果是6,因為實際上,UTF-8編碼的'代碼' == '\xe4\xbb\xa3\xe7\xa0\x81';unicode才是真正意義上的字符串,對字節串str使用正確的字符編碼進行解碼后獲得,并且len(u'代碼') == 2

Python3中的編碼

#!/usr/local/bin/python3#-*- coding: UTF-8 -*-

s='代碼'

print(repr(s)) #代碼print(s.encode('utf-8')) #b'\xe4\xbb\xa3\xe7\xa0\x81'

type(s)#

type(s.encode('utf-8')) #

type(b'str') #

print(s.decode('utf-8')) #AttributeError: 'str' object has no attribute 'decode'

Python3中,所有字符串已是Unicode編碼,只能encode為某一個編碼類型的字節字符串bytes,而不能decode

參考:

總結

以上是生活随笔為你收集整理的python中对字符串进行编码_Python 中的字符串编码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。