【发布时间】:2016-12-08 01:10:18
【问题描述】:
我有一些代码可以从一个环境中获取字符串并在另一个环境中重现它们。我正在使用 Python 3.5。我一直遇到这种错误:
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2013' in 位置 112:正文 ('-') 不是有效的 Latin-1。采用 body.encode('utf-8') 如果你想以 UTF-8 编码发送它。
...我想避免它。此错误来自请求模块。问题是我正在处理数以万计的字符串,并且一直在添加新的字符串。人们正在从 Excel 和诸如此类的东西中剪切和粘贴 - 并且不知道我会遇到什么字符,所以我不能只运行 str.replace()。我想确保从环境 1 获得的每个字符串在发送到环境 2 之前都经过正确的 utf-8 编码。
我尝试了str('yadayada').encode('utf-8).decode('utf-8),但没有成功。我试过str('yadaya', 'utf-8'),但没有奏效。我尝试声明"# -*- coding: UTF-8 -*-",但没有奏效。
【问题讨论】:
-
您在收到它们时如何确保它们都是utf8?
-
我尝试了我在帖子中所说的:我尝试了 'yadayada'.encode('utf-8).decode('utf-8) 并且没有用。我试过 str('yadaya', 'utf-8') ,但没有奏效。我尝试声明“# -- coding: UTF-8 --”,但没有奏效。我从对服务器的调用中获取字符串,所以我只是取回一个对象。该对象具有 name 属性,这就是我从对象中获取的内容。但我无法控制该名称属性的值是什么,制作对象的人只是客户或非技术人员,他们从电子邮件、Excel 等中剪切和粘贴这些名称。
标签: string python-3.x character-encoding