代码之家  ›  专栏  ›  技术社区  ›  sarah vb

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

  •  0
  • sarah vb  · 技术社区  · 12 年前

    我使用的是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”)转换为Unicode:

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

    然后,我用转换后的字符串设置gtk条目的文本:

    entry.set_text(unistring)
    

    但是条目中的文本显示的是“\u2030”,而不是预期的字符。

    有人知道怎么处理吗?

    谢谢

    1 回复  |  直到 12 年前
        1
  •  3
  •   bobince    12 年前
    <map idx='398' unit='\u2030' />
    

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

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

    如果您的编辑器或其他生成文件的文件中确实不支持直接的非ASCII字符,则可以使用字符引用:

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