从文件中读取unicode字符串并将其显示在GUI上(QPlainTextEdit)

时间:2017-08-01 12:38:11

标签: python unicode character-encoding pyqt

从包含字符'ç'的.tex文件中读取时,我遇到了问题。在这里阅读了很多关于堆栈和Python的Python文档后,我已经设法阅读它,但现在我在显示它时遇到问题,而不是得到'ç'我的gui正在显示'ç'。 我的代码执行以下操作:

从文本文件中读取 - >转换.tex特殊字符 - >在gui上显示

读取数据的功能:

def load_info(path, param):
    target = open(r'{}\{}.tex'.format(path, param), 'r')
    #read the line bellow on a stack topic and it seems to work
    value = target.read().decode('string-escape').decode("utf-8")
    print value, type(value) #here I get ç and unicode type
    target.close()
    return value

处理Latex特殊字符的功能:

def LatexFormatting(self, text):
    print text, type(text) #Here I receive "ç, unicode"

    text = text.replace("$\\backslash$", "\\")
    text = text.replace("\\_", "_")
    text = text.replace("\\#", "#")
    text = text.replace("\\$", "$")
    text = text.replace("\\%", "%")
    text = text.replace("\\&", "&")
    text = text.replace("\\~", "~")
    text = text.replace("\\^", "^")
    text = text.replace("\\{", "{")
    text = text.replace("\\}", "}")
    text = text.replace("\n", "\\n")
    text = text.replace("\r", "\\r")
    return text

在gui上显示它的功能:

#I use exec here because there are several gui elements that I need to display texts onto
exec(u'self.ui.{}.setPlainText("{}")' .format(parameter_name, self.LatexFormatting(param_value)))

在我看来,这是某种错误的编码/解码,因为它显示的东西,但不是写东西。

PS:我正在使用Python 2.7和Pyqt4

感谢您提供的任何帮助

- 编辑 - 正如下面的评论中所建议的那样,我已将exec方法更改为getattr,这解决了我的问题。

0 个答案:

没有答案