如何在PyGTK中使用从XML文件中提取的非ASCII字符?

时间:2012-07-25 08:34:30

标签: python xml unicode gtk pygtk

我正在使用Python-GTK,我想在GTK条目中使用permille字符 - 看起来像‰o / oo。 GTK使用Unicode,或者更确切地说是UTF-8。

我实际做的是以这种方式从XML读取字符串:

self.xdb = ElementTree.parse("myfile.xml")
xmap = self.xdb.getiterator(tag="map") 
for x in xmap:
    unit = x.get("unit","")

XML文件以这种方式编写:

<map idx='398' unit='\u2030' />

然后我用这种方式转换字符串(在本例中为'\ u2030'):

 unistring = ""
    for s in unit:
         unistring += unichr(ord(s))

然后我用转换后的字符串设置gtk-entry的文本:

entry.set_text(unistring)

但是条目中的文字显示'\ u2030'而不是预期的字符。

有谁知道如何处理这个问题?

感谢。

1 个答案:

答案 0 :(得分:3)

<map idx='398' unit='\u2030' />

\u转义用于Python字符串文字,而不是XML。 XML文件应该使用原始字符本身:

<map idx='398' unit='‰' />

如果您真的不能在编辑器中支持直接的非ASCII字符或其他任何产生该文件的字符,您可以使用字符引用:

<map idx='398' unit='&#x2030;' />