Python,源代码编码问题

时间:2010-01-23 13:33:40

标签: python character-encoding

我在Windows上使用Notepad ++编辑器,格式设置为ASCII, 我已经阅读了“PEP 263:源代码编码”并相应地修改了我的代码(我认为),但还有一些字符仍然以十六进制打印...

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os, sys

a_munge = [ "A", "4", "/\\", "\@", "/-\\", "^", "aye", "?" ]
b_munge = [ "B", "8", "13", "I3", "|3" , "P>", "|:", "!3", "(3", "/3", "3","]3" ]
c_munge = [ "C", "<", "(", "{", "(c)" ]
d_munge = [ "D", "|)", "|o", "?", "])", "[)", "I>", "|>", " ?", "T)", "0", "cl" ]
e_munge = [ "E", "3", "&", "€", "£", "[-", "|=-", "?" ]
         .
         .
         .

3 个答案:

答案 0 :(得分:2)

也许您应该使用unicode文字(例如u'€')。

答案 1 :(得分:2)

该行:

# -*- coding: UTF-8 -*-

声明源文件以UTF-8保存。还有别的错误。

在源代码中声明字节字符串

e_munge = [ "E", "3", "&", "€", "£", "[-", "|=-", "?" ]

然后像“€”这样的字节字符串实际上会包含用于保存源文件的编码字节。

当您使用Unicode字符串时:

    e_munge = [ u"E", u"3", u"&", u"€", u"£", u"[-", u"|=-", u"?" ]

然后当 u 后跟字节字符串“€”由Python从源文件中读取时,它使用声明的编码将该字符解码为Unicode。

插图:

# coding: utf-8
bs = '€'
us = u'€'
print repr(bs)
print repr(us)

输出:

'\xe2\x82\xac'
u'\u20ac'

答案 2 :(得分:1)

print some_list生效print repr(some_list) - 这就是为什么你看到\u20ac而不是欧元字符的原因。出于调试目的,“unicode hex”正是您明确显示数据所需的。

您的列表中似乎有完美的OK unicode对象;我建议您不要将列表“打印”到Tkinter。