如何将阿拉伯语脚本正确插入Tkinter文本小部件?

我有阿拉伯文的句子/单词,我想插入到Tkinter文本小部件中.
但是,当我插入文本时,会看到以下结果:

这是我要插入的字符串:’تاريخه’,’تارِيخ’第一个正确插入,第二个由findall()提取,插入时出现乱码.

基本上,我所有的代码(用于屏幕快照中的粗体文本)都相当简单:

word = re.findall(u'word=.*', TEXT, re.UNICODE)[0] # searching for Arabic word and taking [0]
header = " ".join([QUERY, word]) # creating a varible to insert
text.insert('1.0', "".join([header,'\n'])) # inserting Arabic text

看起来re.findall()函数查找TEXT中所有出现的’word =.*’正则表达式,并以Unicode表示法检索word变量.

我在这里感到困惑.
我可以在插入文本小部件之前以某种方式转换单词吗?

解决方法:

当您在评论中回答时,TEXT已被转义.更改生成TEXT的函数以正确返回字符串.

如果您无法控制生成文本的功能,请使用str.decodeunicode_escape编码对文本进行转义.

>>> TEXT = u'word=\\u0631\\u064e\\u062c\\u0627'
>>> print TEXT
word=\u0631\u064e\u062c\u0627
>>> TEXT = TEXT.decode('unicode-escape')
>>> print TEXT
word=رَجا

# coding: utf-8

from Tkinter import *

root = Tk()
text = Text(root)
text.pack()

QUERY = u'\u0627\u0631\u062c\u0648'
TEXT = u'word=\\u0631\\u064e\\u062c\\u0627'  # escaped!!
TEXT = TEXT.decode('unicode-escape')
word = re.findall(u'word=.*', TEXT, re.UNICODE)[0]
header = " ".join([QUERY, word])
text.insert('1.0', "".join([header,'\n']))

root.mainloop()
上一篇:Cakephp:如何将阿拉伯语单词保存到mysql表中?


下一篇:PHP:允许字母,数字和阿拉伯字符