【发布时间】:2014-07-07 23:19:03
【问题描述】:
使用极其旧版本的 Python (2.6),我在将数据写入文件时遇到了 Unicode 编码问题:
t = tempfile.NamedTemporaryFile(mode = "w+b")
res = text.encode("UTF-8")
t.write(res)
print t.read()
在这个简单的例子中,text 是一个<unicode> 类型。我将其转换为以 UTF-8 编码的<str> 类型,并将其写入输出文件。但是,当我读入文件时,数据已完全损坏,表明发生了某种编码错误。
使用更高版本的 Python (Python 2.7),这可以完美运行。导致此问题的 Python 2.6 究竟有何不同?
【问题讨论】:
-
在
repr(t.read())之前添加t.seek(0)(t.flush()不会受到伤害,尽管t.seek应该足够了)。添加t.close()。 “导致此问题的 Python 2.6 到底有什么不同?” -- 尝试将text最小化(一个或两个 Unicode 代码点),例如,使用二进制搜索(text = text [:len(text)//2], etc) 或使用diff,cmp比较 Python 2.7 和 Python 2.6 的结果。
标签: python python-2.7 unicode python-2.6