Python3设置了UTF-8文件还是保存为ANSI解决办法

本文通过实验发现,在Python中使用with open保存文件时,仅含有英文内容的文件会忽略UTF-8编码设置,仍以ANSI格式保存;而包含中文内容的文件则能正确应用UTF-8编码。

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

如果你使用Python的with open语法将文本以UTF-8的格式保存,但却没有生效,或许这是你想找的答案。


Python版本:3.6.1

代码:


运行结果:



可以看到文件格式并没有我们想象的以UTF-8的格式保存。

但是在我的另一处代码,这个设置是生效的。

代码相同,运行结果不同,那就有可能是内容的问题。

代码:


运行结果:



可以看到当内容中为中文时才会以UTF-8的格式保存。


那么,当内容既有中文又有英文呢?


先中文后英文:


UTF-8


先英文后中文:


还是UTF-8


那么就剩最后一个问题了,如果打开时就已经是ANSI文件了呢。

先写入英文,再向ANSI文本写入英文:


ANSI



先写入英文,再向ANSI文件写入中文:



UTF-8


说明设置了UTF-8编码后,只有英文时,设置不起作用,还是以ANSI格式存储。

而不论是一开始就写入中文还是追加中文,都会正确地把格式从ANSI转换为UTF-8。

至于原理嘛,有时间再看源码吧。


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值