将字符串编码到Unicode

2024-04-19 06:40:47 发布

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

我只是在玩unicode

s='ab'

s.encode('utf8')
Out[44]: b'ab'

s.encode('utf16')
Out[45]: b'\xff\xfea\x00b\x00'

s.encode('utf32')
Out[46]: b'\xff\xfe\x00\x00a\x00\x00\x00b\x00\x00\x00'

我的问题是为什么utf-8只返回字符串而其他编码返回正确的输出? 第一个编码utf-8不应该像utf-16和utf-32返回字节编码吗?在


Tags: 编码abunicodeutf8oututfencodex00
2条回答

I was expecting something like b'\x..\x..

b'ab'
b'\xff\xfea\x00b\x00'
b'\xff\xfe\x00\x00a\x00\x00\x00b\x00\x00\x00'

是每个字节序列的最简单的Python表示。ab按字面意思包含在表示中,因为这是一个更短、更可读的选项;对于字节\x00则不是这样,因为这是一个不可见的控制字符。在

尽管如此,您当然可以编写ab,因为\x也可以转义,从而得到完全相等的文本:

^{pr2}$

UTF-8的一个优势和具体的设计目标是将普通的旧ASCII字符编码为单个字节,而不需要任何额外的空字节或BOM信令。在

标准ascii字符在utf-8中对自身进行编码。您的utf-8编码正确。这是utf-8的优点之一。在

相关问题 更多 >