Python讀寫文件亂碼問題


對開發者來說,最惱人的問題之一莫過於讀寫文件的時候,由於編碼千差萬別,出現亂碼問題。好難快速解決啊。。。

最近我也遇到了這樣的問題,經研究,把大致的解決思路拿出來共享。

1. python中習慣首先聲明編碼類型

#!/usr/bin/python  
# -*- coding: <encoding name> -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

PS:不一定所有文件都是 utf-8 編碼的,這里要注意啊。。。

2. 出現編碼問題時,首先查看下該文件的初始編碼方式,linux下命令為 :file -i filename

eg:當前文件的編碼為 “ISO-8859-1”,隨后就將Python中的”utf-8“做了相應修改

在讀取文件時,需要先解碼:

str = str.decode("ISO-8859-1")  ## 這樣返回的就是unicode的str
在寫入文件時,再用同樣的方式編碼(這里暫且不提文件轉碼):
str = str.encode("ISO-8859-1")
例如,解析一段“ISO-8859-1”編碼的json,代碼如下
1 import json
2 
3 Jstr = json.loads(str, encoding="ISO-8859-1")
4 ########
5 ## handle sth to ”data“
6 ########
7 print data.encode("ISO-8859-1")
這樣print 或 寫入的文件就不存在亂碼啦。

3:utf-8格式寫入文件
如果以上 json 文件是 utf-8 編碼,寫入后轉為了 unicode,現在要寫入utf-8,可以用如下方式:
import codecs
1 name='xxx.json'  
2 f=codecs.open(name,'r',encoding='utf8')  
3 of=codecs.open(name+'.txt','w', encoding='utf8')  
4 for line in f:  
5     dictdata=json.loads(line)  
6     out=json.dumps(dictdata,indent=4, ensure_ascii=False)  
7     of.write(out+'\n')  
8   
9 of.close() 
 
        

 

 


免責聲明!

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



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