如何在Python中使用编码utf-8.py而不是cp1252.py

时间:2013-09-03 09:50:00

标签: 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()

这很有效,直到all.txt中的utf-8字符。然后它说不出来:

  

UnicodeDecodeError:'charmap'编解码器无法解码位置7102中的字节0x9d:字符映射到&lt; undefined&gt;

现在我做了一个BAD解决方法:在目录\ Python \ Lib \ encodings中我复制了utf-8.py并将其重命名为cp1252.py。

从现在开始 - 上面的小程序运行没有问题。但必须有一个更优雅的解决方案。你能告诉我使Phyton使用utf-8.py而不是cp1252.py需要什么吗?

我确信这是可能的,没有繁重的转换和解码等等 - 只要告诉Python使用另一个解码而不是cp1252.py。

1 个答案:

答案 0 :(得分:3)

使用io.open()来读取和写入Unicode值:

import io

with io.open('all.txt', 'r', encoding='utf8') as f_in:
    with io.open('all.out', 'w', encoding='utf8') as f_out:
        for line in f_in:
            if u"<title>" in line:
                f_out.write(line)

重命名编解码器文件是你应该做的最后一件事。