utf8编码的py文件的open问题

在Linux环境下用Python2.7创建的utf8编码博客系统在Windows下遇到编码问题,尤其是DOS终端显示中文乱码。在尝试解决read时的编码错误时,发现open函数早期用法已过时。最终解决方案是采用二进制方式读写文件,并在读写后进行utf8编码转换,确保跨平台时文件编码不变。对于DOS终端乱码,因主要关注文件格式,只需在必要时对print进行encode处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Linux下使用python2.7-utf8编码写的一个博客系统,切换到MS平台上,遇到最突出的不兼容问题就是编码问题:中文乱码。尤其在dos下,输出会进入繁体字世界。对于dos下中网乱码解决办法这里不赘述了,自行搜索,但是有个特殊的问题,由于网上提供的办法不适用,这里记一笔

Q:utf8编码的文件使用open打开read时,报错

UnicodeDecodeError: 'gbk' codec can't decode byte 0x9d in position 1270: illega

意思明了,使用指定读写编码格式

open(file_path, 'r', 'utf-8')

报错

TypeError: an integer is required [closed]

然后Stack Overflow一下,尝试

open(file_path, 'r', encoding='utf-8')

提示没有encoding参数,help(open),的确参数不对,估计上面的用法是“远古时代”的open,现已进化

A:终极解决办法使用二进制读写

html = open(file_path, 'rb')
或者
html = open(file_path, 'wb')

为了确保utf8,在读写时再执行一次转换

html.read().encode('utf-8')
html.write(body.encode('utf-8'))

如此确保依然使用utf8编码,使得python程序在切换平台时不改变utf8编码。

说明:对于dos终端下输出乱码这样情况,由于我的系统是操作文件的,只要保证文件格式正确即可,对终端输出不是重点,因此无需切换到gbk编码。print需要的时候encode一把。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值