第一:Python2解决中文乱码问题

一.Python中文乱码

1.Python2.7对于中文编码的问题处理的并不好(本篇文章)

2.Python3中字符均使用unicode编码,unicode函数不再需要

二.Pyhton编码说明

1.Pyhton的所有内置库、方法接受的是unicode编码的字符串

2.Linux平台编码(UTF-8)与Window平台(GBK),win的命令返回的是GBK编码

三.Pyhton2各种编码之间如何转换

1.Python提供两个函数 decode() 和 encode()
2.Pyhton2转码出现错误时
2.1.分析原来的编码格式是什么,先通过decode解码成unicode

2.1.1.再通过encode编码成指定格式
2.2.实例:如果一个字符串已经是unicode,再进行解码则将出错

2.2.1.而用非unicode编码形式的str来encode会报错

在这里插入图片描述

四.Python2设置默认编码

1.在代码的首行添加相应说明,设置默认utf-8编码格式,可以解决一般情况下的中文报错

1.1.当然,编程中遇到具体问题还需具体分析

在这里插入图片描述

五.Python2的Excle文件读写

1.Excle文件读写中遇到中文,通常不会报错,但是最后运行结果显示乱码,给后续处理带来不便
2.Python2读文件
2.1.方式一:Pyhton的所有内置库、方法接受的是unicode编码的字符串

2.1.1.读文件时如果文件路径、文件名中有中文,需要使用unicode函数将其从utf-8格式解码为unicode
2.1.1.1.然后再进行正常的文件读取

2.1.2.以pandas的read_csv函数为例:使用代码可以成功地读取名为“POI总表”的csv文件
2.1.2.1.保存在DataFrame数据类型的poi_list

在这里插入图片描述

2.2.方式二:通过xlrd读取Excel文件时,文件名src_excel_path包含中文字符

2.2.1.可以通过指定xlrd.open_workbook的参数encoding_override编码为utf-8

在这里插入图片描述

3.Python2写文件
3.1.文件名有中文,文件名乱码
3.1.1.当想要将程序运行结果保存到文本文件时,文本文件的命名中如果有中文,不做处理文件名会出现乱码
3.1.2.利用unicode函数进行解码可解,unicode('中文.csv','utf-8')3.1.3.文件内容有中文,excel打开内容乱码
3.2.方式一:使用codecs包在创建文件后添加语句f.write(codecs.BOM_UTF8)

3.2.1.优点:简单粗暴,后续write不用特殊处理

3.2.2.缺点:写入文件编码格式是带BOM的utf-8

在这里插入图片描述

3.2.3.如果将包含中文的结果输出到csv文件

3.2.3.1.默认使用Excel打开文件时,文件内容会出现乱码,而用文本编辑器打开不会乱码
3.2.3.2.因为Excel默认的编码方式为GBK,而文本编辑器默认的格式为utf-8
3.2.3.3.使用codecs包在创建文件后添加语句f.write(codecs.BOM_UTF8)可解
name='语文'
f = open(name+'.csv','w')
f.write('123,语文')
f.close()

# 修改编码
import codecs

# 文件名不乱码
f = open(**unicode(name+'.csv','utf-8')**,'w') 

# excel打开内容不乱码的核心语句**
**f.write(codecs.BOM_UTF8) 
f.write('123,语文')
f.close()
# 输出结果
文件名:璇枃.csv
Excel打开  123 璇枃
文本编辑器打开 123,语文
改编码后
文件名:语文.csv
Excel打开  123 语文
文本编辑器打开 123,语文
3.3.方式二:Pyhton的所有内置库、方法接受的是unicode编码的字符串

3.3.1.每次写入内容利用unicode函数进行解码,write(unicode('写入内容','utf-8'))

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平头哥-测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值