Python3編碼與轉碼


python3中有2種編碼格式,分別為str與byte,這里的str相當於Python2中的unicode,byte相當於Python2中的str。再者python3將python源代碼編碼從ascii改成了utf-8,從外部接收的編碼自動轉化成了str(Python2中的unicode),大大減少產生編碼異常的點。與Python2一樣,3中的編碼原則就是將外部接收的字符編碼成str(unicode字符),輸出時再編碼成bytes編碼
1.Python3的bytes與str
  bytes表示字符的原始8位值,str表示Unicode字符。將unicode字符表示為二進制數據(原始8位值),最常見的編碼方式就是UTF-8。python2與3中的unicode字符沒有和特定的二進制編碼相關聯,因此需要使用encode方法。
  在python3中bytes與str是絕對不會等價的,即使字符內容為””,因此在傳入字符序列時必須注意其類型。
  Python3已經把源代碼編碼以及系統編碼從ascii都變成了utf-8,避免了中文報錯。
  import sys
print(sys.getdefaultencoding())
輸出結果:utf-8
#字符串編碼
str1 = '你好'
print(type(str1))
<class 'str'>
str2 = str1.encode('utf-8')
print(type(str2))
<class 'bytes'>
#網頁編碼
import urllib.request
f = urllib.request.urlopen('http://www.cnblogs.com/coffy/p/5748292.html').readlines()
print(type(f[10]))
print(f[10].decode('utf-8'))
輸出結果:
<class 'bytes'>
<link title="RSS" type="application/rss+xml" rel="alternate" href="http://www.cnblogs.com/coffy/rss"/>
#返回的是bytes格式的,只要decode轉化為str就ok了。
#文件編碼
f = open('1.txt').read()
print(type(f))
print(f)
print(type(f).encode('utf-8'))
print(f.encode('utf-8'))
輸出結果:
<class 'str'>
3222
b'utf-8'
b'3222'
#從文件中讀取出來的是str(2.x中的unicode),因此不用轉碼。


免責聲明!

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



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