python2將str類型與unicode類型字符串寫入文件的編碼問題


python2將一個字符串寫入文件中:

1、如果字符串是str類型

# -*- coding:utf-8 -*-
txtFile="今天天氣不錯"
f = open("1.txt", "wb")
f.write(txtFile)
f.close()

2、如果字符串是unicode類型

# -*- coding:utf-8 -*-
txtFile=u"今天天氣不錯"
txtFile=txtFile.encode('utf-8')  #unicode字符串轉換成utf8
f = open("1.txt", "wb")
f.write(txtFile)
f.close()

#如果不轉換,會出現UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)

 NOTE:

 

python2 默認編碼是ASCII碼,使用   # -*- coding:utf-8 -*-    將文件編碼為utf-8,即str類型。

Python3中默認是unicode

 

a = u'今天天氣不錯'             a 是unicode類型
b = a.encode('utf-8')            b 是str類型                         Unicode --> encode編碼 --> GBK/UTF-8
a = b.decode('utf-8')            a 是unicode類型                 UTF-8 --> decode 解碼 --> Unicode

 

使用type查看編碼形式,unicode是‘unicode’,    gbk和utf-8是‘str或bytes’。

 
        
 
        
 


免責聲明!

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



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