我的文件是 US-ASCII,像 a = file( 'main.html')a.read() 这样的命令将它们加载为 ASCII 文本。如何让它以 UTF8 格式加载?

我要解决的问题是:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xae' in position 38: ordinal not in range(128)

我在 template_str.format(attrib=val) 中使用文件的内容进行模板化。但是要插入的字符串是 ASCII 的超集。

我们团队的版本控制和文本编辑器不关心编码。那么如何在代码中处理呢?

最佳答案

您试图在不指定编码的情况下打开文件,这意味着 python 使用默认值 (ASCII)。

您需要使用 .decode() 函数显式解码字节字符串:

 template_str = template_str.decode('utf8')

您尝试插入模板的 val 变量本身就是一个 unicode 值,python 也希望自动将您的字节字符串模板(从文件中读取)转换为一个 unicode 值,以便它可以将两者结合起来,并且它会使用默认编码来做到这一点。

我是否已经提到您应该阅读 Joel Spolsky 的 article on UnicodePython Unicode HOWTO ?他们将帮助您了解这里发生的事情。

关于python - 如何以 UTF8 格式打开 ascii 编码的文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12371286/

10-14 09:58