我的文件是 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 Unicode 和 Python Unicode HOWTO ?他们将帮助您了解这里发生的事情。
关于python - 如何以 UTF8 格式打开 ascii 编码的文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12371286/