zoukankan      html  css  js  c++  java
  • 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+'
    ')  
    8   
    9 of.close() 
    
    
    
     
  • 相关阅读:
    win下发现两个有用的快捷键
    java.sql.SQLException: Access denied for user 'somebody'@'localhost' (using password: YES)
    记一次面试经历(互联网金融行业)
    FindBugs规则整理
    (转)定制findbugs规则
    Docker学习(一)
    HDU3368+枚举
    计算几何题目汇总(转)
    POJ2225+BFS
    POJ2209+水题!
  • 原文地址:https://www.cnblogs.com/tec-vegetables/p/5308117.html
Copyright © 2011-2022 走看看