2010-07-09 25 views

Respuesta

27

Deja esta línea en la parte superior de su fuente de

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

Si su editor utiliza una codificación diferente, sustituto de UTF-8

a continuación, puede incluir caracteres UTF-8 directamente en la fuente

+0

Suponiendo que su editor hace UTF-8. Si su editor utiliza un juego de caracteres diferente, indíquelo en su lugar. –

+0

# - * - codificación: cp1252 - * - es lo que funcionó para mí – Richard

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

Por cierto, todo lo que hice fue buscar "grado unicode" en Google. Esto nos lleva a dos resultados: "signo de grado U + 00B0" y "grado Celsius U + 2103", que en realidad son diferentes:

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

O simplemente 'a = '\ u00b0'' en Python 3. – JAB

+7

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

+0

@SilentGhost: Bueno, sí, pero no recordaba el código del teclado numérico para ° y no tenía ganas de buscarlo en ese momento. – JAB

50

Este es el más coder- Versión de especificar un carácter Unicode:

degree_sign= u'\N{DEGREE SIGN}' 

Nota: debe ser una N mayúscula en el \N construcción para evitar la confusión con el '\ n' carácter de nueva línea. El nombre del personaje dentro de las llaves puede ser cualquier caso.

Es más fácil recordar el name de un carácter que su índice unicode. También es más fácil de leer, ergo para eliminar errores. La sustitución de caracteres que sucede en tiempo de compilación: el archivo .py[co] contendrá una constante para 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

sólo tiene que utilizar \xb0 (in a string); pitón lo convertirá automáticamente

6

respuestas anteriores se supone que la codificación UTF8 puede utilizar con seguridad - éste está dirigido específicamente a Windows.

La consola de Windows normaly utiliza CP850 codificación y no UTF-8, por lo que si se intenta utilizar un UTF-8 codificados archivo de origen, se obtiene esos 2 (incorrectos) ┬░ caracteres en lugar de un grado °.

demostración (usando Python 2.7 en una consola de Windows):

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

salidas efectivamente ┬░.

solución: simplemente forzar la codificación correcta (o mejor uso de Unicode):

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

o si utiliza un archivo de origen que define explícitamente una codificación:

# -*- 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) 
Cuestiones relacionadas