可能的重复:
将 Unicode 转换为 UTF-8 Python
我是一个非常新的 Python 程序员,正在编写我的第一个脚本。该脚本从 plist 字符串中提取文本,然后对其执行一些操作,然后将其打包为 HTML 电子邮件。
从一些条目中,我收到了可怕的 Unicode“outside ordinal 128”错误。
在阅读了尽可能多的有关编码和解码的内容后,我知道获得编码对我来说很重要,但我很难理解何时或如何准确地执行此操作。
首先使用 plistlib 引入有问题的变量,然后将其从 markdown 转换为 HTML,如下所示:
entry = result['Entry Text']
donotecontent = markdown2.markdown(entry)
后来,它在电子邮件中这样写:
html = donotecontent + '<br /><br />' + var3
part1 = MIMEText(html, 'html')
msg.attach(part1)
我的问题是,确保此内容中的 Unicode 字符不会导致抛出错误的最佳方法是什么。我不想忽视这些角色。
抱歉我的英语很蹩脚。我每天都说中文/日文,并使用中日韩字符。
Ceron几乎解决了这个问题,所以我不会讲如何使用encode()
/decode()
again.
当我们使用str()
要转换任何 unicode 对象,它会将 unicode 字符串编码为字节数据;当我们使用unicode()
铸造str
对象,它将字节数据解码为 unicode 字符。
并且,编码必须是从返回的sys.getdefaultencoding()
.
在默认情况下,sys.getdefaultencoding()
默认返回 'ascii',执行时可能会抛出编码/解码异常str()
/unicode()
铸件。
如果你想通过以下方式进行 str unicode 转换str()
or unicode()
,并且使用“utf-8”进行隐式编码/解码,可以执行以下语句:
import sys # sys.setdefaultencoding is cancelled by site.py
reload(sys) # to re-enable sys.setdefaultencoding()
sys.setdefaultencoding('utf-8')
这将导致稍后执行str()
and unicode()
使用 utf-8 编码转换任何基本字符串对象。
但是,我更愿意使用encode()
/decode()
明确地,因为它使我的代码维护更容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)