2016-02-13 19 views
7

Qual è la differenza tra codifica utf-8 e utf8 (se ce ne sono)?Differenza tra codifica utf-8 e utf8 in Python 3.5

Dato il seguente esempio:

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

produce il seguente risultato:

utf-8 b'\xe2\x82\xac' 
utf8 b'\xe2\x82\xac' 
+0

L'output è lo stesso, no? –

risposta

9

Non c'è alcuna differenza. Vedi lo table of standard encodings. In particolare per 'utf_8', i seguenti sono tutti gli alias validi:

'U8', 'UTF', 'utf8' 

Da notare anche la dichiarazione del primo paragrafo:

Avviso che le alternative di ortografia che differiscono solo in caso o di utilizzare un trattino invece che un trattino sono anche alias validi; quindi, ad es. 'utf-8' è un alias valido per il 'utf_8' codec

1

È anche possibile controllare gli alias di una codifica specifica utilizzando encodings modulo, in questo modo, che vi darà una chiave alias corrispondenti come valori:

>>> 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 

e come sottolineato dalla risposta 's il mgilson:

Avviso che le alternative di ortografia che differiscono solo in caso o di utilizzare un trattino invece di un u nderscore sono anche alias validi; pertanto, ad es. 'utf-8' è un alias valido per il codec 'utf_8'.

+0

È bello saperlo! – bastelflp