2010-07-09 10 views

Antwort

27

diese Linie an der Spitze Ihrer Quelle Put

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

Wenn Ihr Editor eine andere Kodierung verwendet, Ersatz für utf-8

Dann können Sie utf-8-Zeichen direkt in der Quelle

+0

Angenommen, Ihr Editor tut UTF-8. Wenn Ihr Editor einen anderen Zeichensatz verwendet, geben Sie dies stattdessen an. –

+0

# - * - Codierung: CP1252 - * - hat bei mir funktioniert – Richard

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

BTW, alles was ich tat war Suche "Unicode Grad" bei Google. Dies bringt zwei Ergebnisse: "Degree Zeichen U + 00B0" und "Grad Celsius U + 2103", die tatsächlich unterschiedlich sind:

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

Oder einfach nur 'a =' \ u00b0'' in Python 3. – JAB

+7

@JAB: oder einfach nur 'a =' ° '. – SilentGhost

+0

@SilentGhost: Nun ja, aber ich konnte mich nicht an den Numpad-Code für ° erinnern und hatte nicht das Gefühl, zu der Zeit nachzusehen. – JAB

50

Dies ist der coder- umfassen Version eines Unicode-Zeichenspezifizierungs:

degree_sign= u'\N{DEGREE SIGN}' 

Hinweis: muss eine Hauptstadt N sein im \N Konstrukt eine Verwechslung mit dem ‚\ n‘ zu vermeiden Newline-Zeichen. Der Charaktername in den geschweiften Klammern kann beliebig sein.

Es ist einfacher, sich an das name eines Zeichens zu erinnern als an seinen Unicode-Index. Es ist auch besser lesbar, ergo-Debugging-freundlich. Der Charakter Substitution geschieht bei der Kompilierung: die .py[co] Datei eine Konstante für u'°' enthalten:

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

nur verwenden \xb0 (in a string); Python es konvertiert automatisch

6

Above Antworten davon aus, dass die UTF8-Codierung sicher verwendet werden kann - diese ein ist speziell für Windows ausgerichtet.

Die Windows-Konsole verwendet normaly CP850 Codierung und nicht utf8, also, wenn Sie versuchen, eine Quelldatei UTF-8-codiert zu verwenden, erhalten Sie diese 2 (falsche) Zeichen ┬░ anstelle eines Grades °.

Demonstration (mit Python 2.7 in einer Windows-Konsole):

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

effektiv ausgibt ┬░.

Fix: zwingen, nur die richtige Codierung (oder eine bessere Nutzung Unicode):

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

oder wenn Sie eine Quelldatei verwenden, die explizit eine Codierung definiert:

# -*- 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) 
Verwandte Themen