【问题标题】:Cant encode ascii character u'\xe9'无法编码 ascii 字符 u'\xe9'
【发布时间】: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 编码是行不通的。使用不同的编码。请注意,要将文本写入文件,您总是对其进行编码 - 编码只是从文本到二进制数据的映射。

标签: python encoding utf-8


【解决方案1】:

如前所述,您正在尝试使用 ASCII 编码编写非 ASCII 字符。由于内置的​​open 函数不支持encoding 参数,因此请考虑在Python 2.7 中始终使用io.open(这是Python 3.x 以来的默认设置)。

【讨论】:

    猜你喜欢
    • 2015-04-13
    • 2016-04-29
    • 2018-05-05
    • 2018-04-15
    • 1970-01-01
    • 2016-09-05
    • 2013-02-11
    • 2015-02-10
    相关资源
    最近更新 更多