Python Unicode打印错误

时间:2015-06-02 03:08:52

标签: python unicode

进行一些unicode测试,遇到了一个我无法克服的错误。

# -- coding: utf-8 -- Enable direct Unicade-8 encoding
    # Imports #
from __future__ import print_function
import locale
from unicodedata import *

locale.setlocale(locale.LC_ALL, '') # Set the locale for your system 'en_US.UTF-8'

def main():
    xlist=[]
    for i in range(9729, 9731):
        xlist.append(eval('u"\\u{:04x}"'.format(i)))
    for x in xlist:
        #print(name(u' ','-'))
        if name(x,'-')!='-':
            #print("{} | {:04x} | {}".format(x, ord(x), name(x,'-'))) #1

            print( x,'|', "%04x"%(ord(x)), '|', name(x,'-')) #2

if __name__ == '__main__':
    main()

运行正常。但是当我改为尝试使用标记为#1而不是数字#2的打印行进行打印时,我收到此错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2601' in position 0: ordinal not in range(128)

我已经研究过这个错误,但它似乎与我的格式有关。但是,#1中的格式与#2中的格式相同或非常相似。

任何帮助将不胜感激。 感谢。

1 个答案:

答案 0 :(得分:2)

将格式化模式转换为uniode字符串。

print(u"{} | {:04x} | {}".format(x, ord(x), name(x,'-')))