UnicodeEncodeError:希望使用 unicode 时的 ascii
我正在尝试这样的事情:
outFile = open("file.txt", "wt",encoding='utf-8') outFile.write(str(sentence)) outFile.close()
并收到错误:
UnicodeEncodeError: 'ascii' 编解码器无法编码字符 '/x4e'。
为什么使用ascii编码器?
我说我的字符串 (str(sentence)) 是 unicode 格式吗?那为什么写入文件时不简单地编码为utf-8呢?此代码在 ubuntu 和 windows 上运行时没有出现异常,但在 mac os x 上出现异常。
在我看来,尽管我明确声明使用 utf-8,但我的 mac 上的某个地方默认使用 ascii
请帮忙,
巴里
I'm trying something like this:
outFile = open("file.txt", "wt",encoding='utf-8') outFile.write(str(sentence)) outFile.close()
and getting the error:
UnicodeEncodeError: 'ascii' codec can't encode character '/x4e'.
why is an ascii encoder being used?
Am I right in saying that my string (str(sentence)) is in unicode? Then why is it not simply encoded as utf-8 when writen to file? This code gives no exception when run on ubuntu and windows, with the exception occuring on mac os x.
Seems to me that ascii is being used by default somewhere on my mac even though i explicitly state the use of utf-8
Please help,
Barry
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
str()
返回一个字符串 yes。并且 str 在写入时会被编码,是的。我不完全确定为什么使用 ascii 编码(它是 Python 2 中的默认编码,但不是 Python 3 中的默认编码),但我更不确定为什么要这样做
str(sentence)
。如果您想解码字节,则不使用str()
,而是使用.decode()
。因此,首先删除str()
调用。您没有提供完整的回溯,但我猜测是
str(sentence)
给出了错误。str()
returns a string yes. And a str will be encoded when written, yes.I'm not entirely sure why the ascii encoding is being used (it is the default encoding in Python 2, but not in Python 3), but I'm even less sure why you do
str(sentence)
. If you want to decode bytes you don' usestr()
you use.decode()
. So start with removing thestr()
call.You don't give a full traceback, but I'm guessing that it's the
str(sentence)
that gives the error.