【发布时间】:2012-11-21 02:39:41
【问题描述】:
我是一个非常新的 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 字符不会导致此错误的最佳方法是什么。我不想忽略这些字符。
【问题讨论】:
-
那么,避免此内容中出现 Unicode 错误的最佳方法是什么?
-
一般情况下,您希望尽早将数据解码为Unicode,然后在最后进行编码。我不确定您程序中的各个部分,但如果
entry是包含文本的内容,请尝试entry = result['Entry Text'].decode('utf8')将其转换为 Unicode,然后在您阅读写作时,也许是donotecontent.encode('utf8')。跨度> -
@ColeJohnson 不,不是。 Unicode 和 UTF-8 是完全不同的东西。 UTF-8 是 Unicode 的一种编码格式,用于将 unicode 字符串表示为字节串。
-
有很多带有 Unicode 引号、破折号和重音符号的英文数据。您输入的任何数据都可能包含非 ASCII 字符,而在您假设没有的那一天,有人会证明您错了,并且可能会对此感到非常不安。