2010-07-09 15 views

cevap

27

Kaynağınızın üstündeki bu çizgi koyun

# -*- coding: utf-8 -*- 
Düzenleyicinizin utf-8

için farklı bir kodlama, yerine kullanıyorsa

Sonra kaynağın

+0

Düzenleyicinizin UTF-8 olduğunu varsayarsak. Düzenleyiciniz farklı bir karakter takımı kullanıyorsa, bunun yerine bunu belirtin. –

+0

# - * - kodlama: cp1252 - * - benim için çalışan nedir – Richard

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

BTW, tek yaptığım Google'da "unicode derecesi" aramasıydı. "Derece işareti U + 00B0" ve "2103 Derece Celsius U +", aslında farklıdır: Bu iki sonuç getirir

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

Ya da sadece Python 3'teki 'a = '\ u00b0' '. – JAB

+7

@JAB: ya da sadece' a =' ° ''. – SilentGhost

+0

@SilentGhost: Şey, evet, ama numpad kodu ° için hatırlamadım ve o zaman bakmak gibi hissetmedim. – JAB

50

Bu en coder- olduğu doğrudan utf-8 karakter içerebilir Bir unicode karakter belirtme dostu sürümü:

degree_sign= u'\N{DEGREE SIGN}' 

Not: '\ n' satır karakteri ile karışmaması için \N yapı içinde bir sermaye N olmalıdır. Kıvrık parantez içindeki karakter adı her durumda olabilir.

Unicode dizininden bir karakterin name değerini hatırlamak daha kolaydır. Ayrıca daha okunabilir, hata ayıklama dostu. karakter ikame derleme zamanında gerçekleşir: .py[co] dosya u'°' için sabit içerecektir:

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

Üstü cevaplar UTF8 kodlaması güvenle kullanılabilir varsayalım sadece dönüştürecektir \xb0 (in a string); python kullanmak - bu bir Windows için özel olarak hedeflenmiştir. Eğer utf8 kodlu bir kaynak dosyasını kullanmaya çalışırsanız o kadar

, Windows konsolunda

normalde, CP850 kodlama ve değil utf8 kullanır Alacağınız bu 2 (yanlış) karakterleri yerine bir dereceye ° arasında ┬░. (A pencere konsolunda python 2.7 kullanarak)

Gösterme:

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

etkili bir ┬░ verir.

Fix: sadece doğru kodlamayı (ya da daha iyi kullanım unicode) zorlamak:

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

ya siz açık bir şekilde bir kodlama tanımlayan bir kaynak dosyasını kullanırsanız:

# -*- 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) 
İlgili konular