在 Python 3.5 中编码 utf-8 和 utf8 有什么区别



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

给定以下示例:

u = u'€'
print('utf-8', u.encode('utf-8'))
print('utf8 ', u.encode('utf8'))

它产生以下输出:

utf-8 b'xe2x82xac'
utf8  b'xe2x82xac'

没有区别。 请参阅标准编码表。 特别是对于'utf_8',以下都是有效的别名:

'U8', 'UTF', 'utf8'

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

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

您还可以使用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

正如麦吉尔森的回答所指出的那样:

请注意,拼写替代项仅在大小写上有所不同或使用 连字符而不是下划线也是有效的别名;因此 例如,"UTF-8"是"utf_8"编解码器的有效别名。

最新更新