对unicode字符串调用str()时会发生什么情况?

2024-04-20 03:15:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道在unicode字符串上调用str()时内部会发生什么。在

# coding: utf-8
s2 = str(u'hello')

s2只是str()参数的unicode字节表示吗?在


Tags: 字符串hello参数字节unicodeutfs2coding
1条回答
网友
1楼 · 发布于 2024-04-20 03:15:05

它将尝试使用您的默认编码对其进行编码。在我的系统中,这是ASCII,如果有任何非ASCII字符,它将失败:

>>> str(u'あ')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042' in position 0: ordinal not in range(128)

请注意,这与调用encode('ascii')时会遇到的错误相同:

^{pr2}$

正如您可能想象的那样,str处理一些参数而在其他参数上失败,这使得编写代码变得很容易,这些代码乍一看似乎是有效的,但一旦您在其中添加了一些国际字符,则会停止工作。Python 3通过使问题变得明显而避免了这一点:如果没有显式编码,就无法将Unicode转换为字节字符串:

>>> bytes(u'あ')
TypeError: string argument without an encoding

相关问题 更多 >