2024-04-20 03:15:05 发布
网友
我想知道在unicode字符串上调用str()时内部会发生什么。在
# coding: utf-8 s2 = str(u'hello')
s2只是str()参数的unicode字节表示吗?在
它将尝试使用您的默认编码对其进行编码。在我的系统中,这是ASCII,如果有任何非ASCII字符,它将失败:
>>> str(u'あ') UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042' in position 0: ordinal not in range(128)
请注意,这与调用encode('ascii')时会遇到的错误相同:
encode('ascii')
正如您可能想象的那样,str处理一些参数而在其他参数上失败,这使得编写代码变得很容易,这些代码乍一看似乎是有效的,但一旦您在其中添加了一些国际字符,则会停止工作。Python 3通过使问题变得明显而避免了这一点:如果没有显式编码,就无法将Unicode转换为字节字符串:
str
>>> bytes(u'あ') TypeError: string argument without an encoding
它将尝试使用您的默认编码对其进行编码。在我的系统中,这是ASCII,如果有任何非ASCII字符,它将失败:
请注意,这与调用
^{pr2}$encode('ascii')
时会遇到的错误相同:正如您可能想象的那样,
str
处理一些参数而在其他参数上失败,这使得编写代码变得很容易,这些代码乍一看似乎是有效的,但一旦您在其中添加了一些国际字符,则会停止工作。Python 3通过使问题变得明显而避免了这一点:如果没有显式编码,就无法将Unicode转换为字节字符串:相关问题 更多 >
编程相关推荐