我已经编写了一些代码来创建十六进制系统的所有四位组合,现在我正在尝试使用它来打印与这些值相关联的所有unicode字符。以下是我用于执行此操作的代码:
char_list =["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]
pairs = []
all_chars = []
# Construct pairs list
for char1 in char_list:
for char2 in char_list:
pairs.append(char1 + char2)
# Create every combination of unicode characters ever
for pair1 in pairs:
for pair2 in pairs:
all_chars.append(pair1 + pair2)
# Print all characters
for code in all_chars:
expression = "u'\u" + code + "'"
print "{}: {}".format(code,eval(expression))
这是我得到的错误信息:
Traceback (most recent call last): File "C:\Users\andr7495\Desktop\unifun.py",
line 18, in <module> print "{}: {}".format(code,eval(expression))
UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' in position 0:
ordinal not in range(128)
当尝试打印u"\u0080"时,会抛出异常,但在交互式解释器中却没有问题。
我已经尝试将结果转化为unicode并指定忽略错误,但这并没有帮助。我觉得我缺乏对unicode如何工作的基本理解,但是否有任何方法可以使我的代码打印出所有有效的unicode表达式?
u"\u0080"
是控制字符...也许你无法打印它? - tmdavisonchcp
编码范围的字符,请安装win-unicode-console
软件包。请参阅Python,Unicode和Windows控制台。 - jfs