use*_*536 4 python encoding utf-8
我编写了一个非常小的程序,当该行包含某个字符串时,它将一个文件的所有行复制到另一个文件。这是完整的来源:
f_in = open("all.txt", "r")
f_out = open("all.out", "w")
for line in f_in:
if "<title>" in line:
f_out.write(line)
f_out.close()
f_in.close()
Run Code Online (Sandbox Code Playgroud)
这非常有效,直到遇到 all.txt 中的 utf-8 字符。然后它失败了:
UnicodeDecodeError:“charmap”编解码器无法解码位置 7102 中的字节 0x9d:字符映射到 <未定义>
现在我做了一个糟糕的解决方法:在目录 \Python\Lib\encodings 中,我复制了 utf-8.py 并将其重命名为 cp1252.py。
从现在开始 - 上面的小程序运行没有问题。但必须有一个更优雅的解决方案。你能告诉我需要什么才能让 Phyton 使用 utf-8.py 而不是 cp1252.py 吗?
我确信这是可能的,不需要大量的转换和解码等等——只需告诉Python使用另一种解码而不是cp1252.py。
使用该-X utf8选项运行 python。
我有以下错误:
UnicodeEncodeError: 'charmap' codec can't encode character '\u0141' in position 10: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
正如人们所期望的那样,我使用了with open(filepath, "r+", encoding="utf-8") as yaml_file:(显式编码),但是 Windows 一直在使用cp1252.py,这让我很恼火,因为它一直导致上面的错误。
不管怎样,跑步python -X utf8 .\script.py解决了我的问题。
| 归档时间: |
|
| 查看次数: |
11172 次 |
| 最近记录: |