我正试图让它正确显示
unicode :.
嗯,这个角色范围。这是'Mathematical Alphanumeric Symbols Unicode block'。 关于这些角色的事情,他们使用两个逃脱一个字母,所以它有点奇怪
。 = \ uD835 \ uDC12 \ uD835 \ uDC13 \ uD835 \ uDC00 \ uD835 \ uDC02 \ uD835 \ uDC0A \ uD835 \ uDC0E \ uD835 \ uDC15 \ uD835 \ uDC04 \ uD835 \ uDC11 \ uD835 \ uDC05 \ uD835 \ uDC0B \ uD835 \ uDC0E \ uD835 \ uDC16。\ uD835 \ uDC02 \ uD835 \ uDC0E \ uD835 \ uDC0C
无论如何,他们实际上正确输出到我的程序,但他们没有显示。 从谷歌搜索,我看到tkinter和unicode支持存在一些问题。 Picture related.
我该怎么办?
答案 0 :(得分:3)
你可能运气不好。这些Unicode代码点是UTF-16代理。当我使用tkinter
的字符串使用正确的Unicode代码点时,错误变为:
_tkinter.TclError: character U+1d412 is above the range (U+0000-U+FFFF) allowed by Tcl
我使用的字符串:
s = '\U0001d412\U0001d413\U0001d400\U0001d402\U0001d40a\U0001d40e\U0001d415\U0001d404\U0001d411\U0001d405\U0001d40b\U0001d40e\U0001d416.\U0001d402\U0001d40e\U0001d40c'
import unicodedata as ud
for c in s:
print(ud.name(c))
输出:
MATHEMATICAL BOLD CAPITAL S
MATHEMATICAL BOLD CAPITAL T
MATHEMATICAL BOLD CAPITAL A
MATHEMATICAL BOLD CAPITAL C
MATHEMATICAL BOLD CAPITAL K
MATHEMATICAL BOLD CAPITAL O
MATHEMATICAL BOLD CAPITAL V
MATHEMATICAL BOLD CAPITAL E
MATHEMATICAL BOLD CAPITAL R
MATHEMATICAL BOLD CAPITAL F
MATHEMATICAL BOLD CAPITAL L
MATHEMATICAL BOLD CAPITAL O
MATHEMATICAL BOLD CAPITAL W
FULL STOP
MATHEMATICAL BOLD CAPITAL C
MATHEMATICAL BOLD CAPITAL O
MATHEMATICAL BOLD CAPITAL M
我使用了"你好世界" Python 3.5文档中的示例:
import tkinter as tk
s = '\U0001d412\U0001d413\U0001d400\U0001d402\U0001d40a\U0001d40e\U0001d415\U0001d404\U0001d411\U0001d405\U0001d40b\U0001d40e\U0001d416.\U0001d402\U0001d40e\U0001d40c'
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.pack()
self.createWidgets()
def createWidgets(self):
self.hi_there = tk.Button(self)
self.hi_there["text"] = s
self.hi_there["command"] = self.say_hi
self.hi_there.pack(side="top")
self.QUIT = tk.Button(self, text="QUIT", fg="red",
command=root.destroy)
self.QUIT.pack(side="bottom")
def say_hi(self):
print("hi there, everyone!")
root = tk.Tk()
app = Application(master=root)
app.mainloop()