python - 在 python 2.X 中混合 unicode 和 str ...问题?

标签 python email

mystr = 'aaaa'
myvar = u'My string %s' % str(mystr)

这会成为 future 的问题吗?我搞乱了一些在 Python 中使用电子邮件模块的内部代码,并发现了一些像这样的代码。 mystr 将始终仅包含 ascii 字符,因为它来自包含预定义的仅 ascii 字符的列表。

我没有编写代码,并且使用 str(mystr)mystr 不会改变问题的实质。

完成第一个片段后,我将拥有一个安全的 unicode 对象,或者我必须

mystr = u'aaaa'
myvar = u'My string %s' % mystr

mystr = 'aaaa'
myvar = u'My string %s' % unicode(mystr)

(我知道这不是正确的做法,我知道我应该处理异常,我在这里询问只有第一个片段返回一个有效的unicode对象,或者Python是否搞乱了它的内部结构或其他什么时候这样做。)

最佳答案

尝试在字符串中放入实际的 unicode 符号(例如元音变音或西里尔字母),然后观看惨败。 :)

s = 'свят' # world
v = u'здравей %s' % s # hello %s 

Traceback (most recent call last):
File "<input>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)

问题是,您很可能会对您的应用程序进行编码,并且在一个明亮的日子里,一些俄罗斯人或德国人会写下她的名字,并会突然因具有非 ASCII 符号而收到内部服务器错误以她的名义。


I know... I'm asking about the situation in my example, using ascii only in

不,不会有任何问题。恕我直言,这是 Python 中的一个错误,因为这是一个 bug,等待着被咬。这本来应该是一个致命的错误,但由于历史原因,我想,事实并非如此。

关于python - 在 python 2.X 中混合 unicode 和 str ...问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737736/

相关文章:

Python代码组织帮助: importing functions

python - 将值解压到变量中或无(ValueError : not enough values to unpack)

mysql - 在crontab centos中发送Email on Sql报错

带有重音的 PHP 邮件

python - mod-wsgi 和 apache 和 Pyramid (pylons 项目)

python - 检查 paramiko ssh 连接是否仍然存在

python - plotly Python : Multiple item selection interactive plot

Android gmail 未出现在 Nexus 设备(平板电脑和手机)上的邮件 Intent 共享列表中

html - 粘贴到电子邮件时突出显示语法

android - 知道android :onClick came from and retrvieve children data在哪里