2010-07-09 10 views

risposta

27

mettere questa linea alla parte superiore della vostra fonte

# -*- coding: utf-8 -*- 

Se l'editor utilizza una codifica diversa, sostituto di utf-8

Quindi è possibile includere i caratteri UTF-8 direttamente nella sorgente

+0

Supponendo che l'editor sia UTF-8. Se il tuo editor usa un set di caratteri diverso, allora indica quello. –

+0

# - * - codifica: cp1252 - * - è ciò che ha funzionato per me – Richard

27
>>> u"\u00b0" 
u'\xb0' 
>>> print _ 
° 

BTW, tutto ciò che ho fatto è stato cercare "unicode degree" su Google. Questo porta in primo piano due risultati: "segno di Laurea U + 00B0" e "grado Celsius U + 2103", che sono in realtà diverse:

>>> u"\u2103" 
u'\u2103' 
>>> print _ 
℃ 
+0

Oppure solo 'a = '\ u00b0'' in Python 3. – JAB

+7

@JAB: o solo' a =' ° ''. – SilentGhost

+0

@SilentGhost: Beh, sì, ma non ricordavo il codice numerico per ° e non avevo voglia di cercarlo in quel momento. – JAB

50

Questo è il più coder- rispetto alla versione specifica di un carattere Unicode:

degree_sign= u'\N{DEGREE SIGN}' 

Nota: deve essere una N maiuscola nella \N costrutto per evitare confusione con il '\ n' carattere di nuova riga. Il nome del personaggio all'interno delle parentesi graffe può essere comunque.

È più facile ricordare lo name di un carattere rispetto all'indice Unicode. È anche più leggibile, ergo debugging-friendly. La sostituzione personaggio avviene al momento della compilazione: il file .py[co] conterrà una costante per u'°':

>>> import dis 
>>> c= compile('u"\N{DEGREE SIGN}"', '', 'eval') 
>>> dis.dis(c) 
    1   0 LOAD_CONST    0 (u'\xb0') 
       3 RETURN_VALUE 
>>> c.co_consts 
(u'\xb0',) 
>>> c= compile('u"\N{DEGREE SIGN}-\N{EMPTY SET}"', '', 'eval') 
>>> c.co_consts 
(u'\xb0-\u2205',) 
>>> print c.co_consts[0] 
°-∅ 
6

basta usare \xb0 (in a string); python convertirà automaticamente

6

risposte di cui sopra per scontato che la codifica UTF-8 può tranquillamente essere utilizzato - questo uno è specificamente mirato per Windows.

La console di Windows utilizza normalmente CP850 codifica e non utf8, quindi se si tenta di utilizzare un file sorgente utf8-codificato, si ottiene quei 2 caratteri (errati) ┬░ invece di un grado °.

dimostrazione (utilizzando python 2.7 in una console di Windows):

deg = u'\xb0` # utf code for degree 
print deg.encode('utf8') 

uscite in modo efficace ┬░.

Fix: basta forzare la codifica corretta (o meglio l'uso unicode):

local_encoding = 'cp850' # adapt for other encodings 
deg = u'\xb0'.encode(local_encoding) 
print deg 

o se si utilizza un file di origine che definisce esplicitamente una codifica:

# -*- coding: utf-8 -*- 
local_encoding = 'cp850' # adapt for other encodings 
print " The current temperature in the country/city you've entered is " + temp_in_county_or_city + "°C.".decode('utf8').encode(local_encoding) 
Problemi correlati