我在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", "&", "€", "£", "[-", "|=-", "?" ]
.
.
.
答案 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。