2010-07-09 7 views

Répondre

27

Mettez cette ligne en haut de votre source

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

Si votre éditeur utilise un codage différent, substitut pour utf-8

Ensuite, vous pouvez inclure caractères UTF-8 directement dans la source

+0

En supposant que votre éditeur fasse UTF-8. Si votre éditeur utilise un jeu de caractères différent, indiquez-le à la place. –

+0

# - * - Codage: cp1252 - * - est ce qui a fonctionné pour moi – Richard

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

BTW, tout ce que j'ai fait était de chercher "unicode degree" sur Google. Ceci nous amène à deux résultats: "signe degré U + 00B0" et "degré Celsius U + 2103", qui sont en fait différents:

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

Ou juste 'a = '\ u00b0'' en Python 3. – JAB

+7

@JAB: ou juste' a =' ° ''. – SilentGhost

+0

@SilentGhost: Eh bien oui, mais je ne me rappelais pas le code du pavé numérique pour ° et je n'avais pas envie de le regarder à ce moment-là. – JAB

50

C'est le plus coder- Version imprimable de spécifier un caractère unicode:

degree_sign= u'\N{DEGREE SIGN}' 

Note: doit être un N majuscule dans la construction \N pour éviter toute confusion avec le « \ n » retour à la ligne. Le nom du personnage à l'intérieur des accolades peut être n'importe quel cas.

Il est plus facile de se souvenir du name d'un caractère que de son index unicode. C'est aussi plus lisible, ergo débogage-amical. La substitution de caractères se produit au moment de la compilation: le fichier .py[co] contiendra une constante pour 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

il suffit d'utiliser \xb0 (in a string); python convertira automatiquement

6

réponses ci-dessus supposent que UTF8 peut être utilisé sans danger - celui-ci est spécifiquement ciblé pour Windows.

La console Windows utilise le codage CP850 et normaly pas UTF8, donc si vous essayez d'utiliser un fichier source codée UTF8, vous obtenez ces 2 (incorrects) caractères ┬░ au lieu d'un degré °.

Démonstration (en utilisant 2,7 python dans une console de fenêtres):

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

délivre efficacement ┬░.

Fix: il suffit de forcer le codage correct (ou mieux utiliser unicode):

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

ou si vous utilisez un fichier source qui définit explicitement un codage:

# -*- 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) 
Questions connexes