提问人:julaine 提问时间:9/14/2023 更新时间:9/14/2023 访问量:59
如何在 Windows 上以正确的编码打开 python 中的文本文件?
How to open a textfile in python on windows with the correct encoding?
问:
我知道正确确定文本的编码是不可能的。 但是,我注意到记事本等程序可以正确读取以 utf-8 编码的文件,我想在 python 中做同样的事情。
open
不能这样做,python3.11 中记录了使用系统本地编码作为默认值,在我的机器上是“cp1252”,因此行为不依赖于文件或其元数据中可能存在的任何 BOM 或其他魔术。
以下代码在 python 版本 3.7、3.10 和 3.11 上的作用相同(这是我尝试过的所有内容):
fname = "tmpWindowsOut.txt"
with open(fname, "w", encoding="utf-8") as f:
# if encoding wasn't specified in `open` this fails with the infamous
# UnicodeEncodeError: 'charmap' codec can't encode character '\u03b2' in position 1: character maps to <undefined>
f.write("βKHα")
with open(fname, "r") as f:
print(f.read()) # prints βKHα
# opening the file with notepad shows the correct output
我知道我可以通过将 encoding-parameter 传递给另一个 -call 来正确读取文件,问题不在于如何读取已知编码的文件。问题是如何:open
utf-8
- 在不指定编码的情况下正确执行 -part
read
- 以一种使 No.1 更容易(甚至可能)的方式执行 -part
write
答: 暂无答案
评论