在Python 3.5中编码utf-8和utf8之间的区别

bas*_*flp 12 python unicode utf-8 character-encoding python-3.x

编码utf-8utf8(如果有的话)有什么区别?

给出以下示例:

u = u'€'
print('utf-8', u.encode('utf-8'))
print('utf8 ', u.encode('utf8'))
Run Code Online (Sandbox Code Playgroud)

它产生以下输出:

utf-8 b'\xe2\x82\xac'
utf8  b'\xe2\x82\xac'
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 17

没有区别.请参阅标准编码表.具体来说'utf_8',以下是所有有效的别名:

'U8', 'UTF', 'utf8'
Run Code Online (Sandbox Code Playgroud)

另请注意第一段中的陈述:

请注意,只有大小写或使用连字符而不是下划线的拼写替代方案也是有效的别名; 因此,例如'utf-8''utf_8'编解码器的有效别名


Iro*_*ist 7

您还可以使用encodings模块检查特定编码的别名,这样,它将为您提供一个 Key 匹配别名作为值:

>>> from encodings.aliases import aliases
>>> 
>>> for k,v in aliases.items():
    if 'utf_8' in v:
        print('Encoding name:{:>10} -- Module Name: {:}'.format(k,v))


Encoding name:       utf -- Module Name: utf_8
Encoding name:        u8 -- Module Name: utf_8
Encoding name: utf8_ucs4 -- Module Name: utf_8
Encoding name: utf8_ucs2 -- Module Name: utf_8
Encoding name:      utf8 -- Module Name: utf_8
Run Code Online (Sandbox Code Playgroud)

正如mgilson的回答所指出的那样

请注意,仅大小写不同或使用连字符而不是下划线的拼写替代方案也是有效的别名;因此,例如“utf-8”是“utf_8”编解码器的有效别名。