Discuss / Python / 请教一个问题

请教一个问题

Topic source

sheep--羊

#1 Created at ... [Delete] [Delete and Lock User]

要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。 这段不太理解,说的不同是指编码方式不同吗?'ABC'是Unicode编码,而b'ABC'是utf-8编码,是这样吗?

换个理解方式 ‘中文’ 和b‘中文’ 这么看理解了吧 ‘中文’是字符串 len(‘中文’)包含2个字符 len(b’中文‘)包含6个字节 ’abc‘包含3个字符 由于英文字母一个字符就是1个字节 所以长度和b’abc一样 但是 字符不等于字节 理解了吧 我反正是这么理解的

我是核仁

#3 Created at ... [Delete] [Delete and Lock User]

指出2楼回答中的一个问题,len(b'中文')是无法运行的,因为含有中文的str无法用ASCII编码,但可以用UTF-8编码为bytes,即写成

len('中文'.encode('utf-8'))

才能得到结果6。由此可见,1个中文字符经过UTF-8编码后通常会占用3个字节。


  • 1

Reply