如果你使用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。
至于原理嘛,有时间再看源码吧。