【发布时间】:2014-09-27 20:58:10
【问题描述】:
我有一堆用 shift_jis 编码的 txt 文件,我想将它们转换为 utf-8 编码,以便特殊字符可以正常显示。以前可能有人问过这个问题,但我似乎无法正确回答。
更新:我更改了我的代码,所以它首先写入一个列表,然后它会从列表中写入内容。
words = []
with codecs.open("dummy.txt", mode='r+', encoding='shiftjis') as file:
words = file.read()
file.seek(0)
for line in words:
file.write(line.encode('utf-8'))
但是现在我得到运行时错误,程序只是崩溃了。 经过进一步调查,似乎“file.seek(0)”导致程序崩溃。如果此行被注释,程序运行不会出错。我不知道为什么会这样。它是如何导致错误的?
【问题讨论】:
-
应该标记 Python 吗?
-
谢谢,我感觉我错过了什么
-
“更新:我更改了我的代码,因此它首先写入一个列表,然后它会写入列表中的内容。” 我在您的代码中没有看到列表sn-p?
-
@tonywang:实际上,您的代码根本不会写入列表。您的代码使用列表初始化
words,然后将其直接替换为文件的全部内容字符串(这是file.read()的输出)。 -
我认为您不能期望将 UTF-8 写入使用
encoding='shiftjis'打开的文件;即使它有效,它只会将您的 UTF-8 转换回 Shift-JIS。
标签: python utf-8 encode shift-jis