2010-07-09 3 views

답변

27

이 소스의 상단에이 줄을 넣어

# -*- coding: utf-8 -*- 
편집기가 UTF-8

에 대해 서로 다른 인코딩, 대체를 사용하는 경우

그런 다음 소스

+0

편집기가 UTF-8을 사용한다고 가정합니다. 에디터가 다른 캐릭터 세트를 사용한다면, 그 대신에 그것을 표시하십시오. –

+0

# - * - 코딩 : cp1252 - * - 나를 위해 효과가있다. – Richard

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

나는 모두 Google에서 "유니 코드 학위"를 검색했습니다. "학위 기호 U + 00B0"와 "2103 섭씨 U +"실제로 다른 :이 두 가지 결과를 가져온다

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

또는 파이썬 3에서'a = '\ u00b0''. – JAB

+7

@JAB : 또는 단지'a ='° ''. – SilentGhost

+0

@SilentGhost : 그렇습니다. 그러나 나는 숫자에 대한 숫자 코드를 기억하지 못했고 그 당시에는 그것을보고 싶지 않았습니다. – JAB

50

이 가장 coder-입니다 직접 UTF-8 문자를 포함 할 수 있습니다 유니 코드 문자를 지정 친화적 인 버전 :

degree_sign= u'\N{DEGREE SIGN}' 

참고 : '\ n'은 줄 바꿈 문자와 혼동을 피하기 위해 \N 구조에서 자본 N이어야합니다. 중괄호 안에있는 문자 이름은 어떤 경우이든 상관 없습니다.

문자의 name은 유니 코드 색인보다 기억하기 쉽습니다. 또한 읽기 쉽고 디버깅에 매우 편리합니다. 문자 대체가 컴파일시에 발생하는 다음 .py[co] 파일이 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

위 답변 UTF8 인코딩을 안전하게 사용할 수 있다고 가정 그냥 변환합니다 \xb0 (in a string); 파이썬을 사용 -이 일을 Windows 용으로 특별히 타겟팅되었습니다. 당신이 UTF8 인코딩 된 소스 파일을 사용하려고, 그래서 만약

윈도우 콘솔

가 normaly, CP850 인코딩 및 하지 UTF8을 사용하여, 당신은 얻을 그 2 (잘못된) 문자 대신도 °┬░. (윈도우 콘솔 파이썬 2.7 사용)

데모 :

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

효과적으로 ┬░ 출력한다.

수정 : 그냥 올바른 인코딩 (또는 더 나은 사용 유니 코드) 강제 :

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

을하거나 명시 적으로 인코딩 정의하는 소스 파일을 사용하는 경우 :

# -*- 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) 
관련 문제