【发布时间】:2015-10-21 01:05:39
【问题描述】:
当我将字符串写入文件时,我收到一条消息'ascii' codec can't encode character u'\xe9',这就是我写入文件的方式
my_file = open(output_path, "w")
my_file.write(output_string)
my_file.close()
我一直在搜索并找到类似UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 7: ordinal not in range(128) 这样的答案,第一个没有用,然后这个我很困惑为什么我要编码我希望能够读取的数据
import io
f = io.open(filename, 'w', encoding='utf8')
感谢您的帮助
【问题讨论】:
-
ASCII 是 7 位编码。没有像 ASCII E9 这样的值。
-
@JonSkeet 你是什么意思?当我将字符串写入文件时,这就是我得到的错误
UnicodeEncodeError: 'ascii' codec can't encode character u'\x96' in position 62393: ordinal not in range(128)和UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 343071: ordinal not in range(128) -
“为什么我要编码我希望能够读取的数据”——没有文本,只有编码文本。
-
@spenf10:是的,因为那个字符不是 ASCII。那就是我的意思。您所指的 unicode 字符是 U+00E9。那不是 ASCII,所以试图用 ASCII 编码是行不通的。使用不同的编码。请注意,要将文本写入文件,您总是对其进行编码 - 编码只是从文本到二进制数据的映射。