2010-07-09 53 views

回答

27

把这一行在源代码的顶部

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

如果你的编辑器使用不同的编码,代替UTF-8

然后你就可以直接在源

+0

假设您的编辑器使用UTF-8。如果您的编辑器使用不同的字符集,则请改为指明。 – 2010-07-09 19:19:12

+0

# - * - 编码:cp1252 - * - 是为我工作的 – Richard 2010-07-15 13:48:40

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

顺便说一句,我所做的一切都是在Google上搜索“unicode学位”。这带来了两个结果: “度SIGN U + 00B0” 和 “摄氏度U + 2103”,这实际上是不同的:

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

或者Python 3中的'a ='\ u00b0''。 – JAB 2010-07-09 17:42:47

+7

@JAB:或者只是'a ='°''。 – SilentGhost 2010-07-09 17:46:36

+0

@SilentGhost:好的,但是我不记得°的数字键盘代码,并且不想在当时查看它。 – JAB 2010-07-09 18:30:40

50

这是最coder-包括UTF-8字符友好的版本指定Unicode字符:

degree_sign= u'\N{DEGREE SIGN}' 

注意:必须大写字母N在\N结构,以避免与“\ n”换行符混乱。花括号内的字符名称可以是任何情况。

记住一个字符的name比它的unicode索引更容易记住。它也更易读,易于调试。该字符替换发生在编译时间为:.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

只使用\xb0 (in a string);蟒蛇会把它转换成自动

6

以上答案假设UTF8编码可安全使用 - 这一个专门针对Windows。

Windows控制台normaly使用CP850编码和 UTF8,因此,如果您尝试使用源文件UTF8编码,你让那些2(不正确)的字符┬░代替程度°

示范(在Windows控制台使用python 2.7):

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

有效输出┬░

修复:正义的力量正确的编码(或更好地使用Unicode):

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) 
相关问题