Проблема записи данных Unicode UTF-8 в файл в Python - PullRequest
0 голосов
/ 01 июня 2011

У меня проблемы с записью юникода в файл в моей программе на Python.

Вот код, который 'сохраняет' файл:

def file_save(self):
    # save changes to existing file
    if self.filename and isfile(self.filename):

        self.watcher.removePath(self.filename)
        s = codecs.open(self.filename,'w','utf-8')
        s.write(unicode(self.ui.editor_window.toPlainText()))
        s.close()
        self.ui.button_save.setEnabled(False)
        self.watcher.addPath(self.filename)
    # save a new file
    else:
        fd = QtGui.QFileDialog(self)
        newfile = fd.getSaveFileName()
        if newfile:
            s = codecs.open(newfile,'w','utf-8')
            s.write(unicode(self.ui.editor_window.toPlainText()))
            s.close()
            self.ui.button_save.setEnabled(False)

После вызова этого метода я получаю следующее сообщение об ошибке:

line 113, in file_save
s.write(unicode(self.ui.editor_window.toPlainText()))
NameError: global name 'unicode' is not defined

Я запускаю Python3.2 и, похоже, нигде не могу найти проблему.

1 Ответ

5 голосов
/ 01 июня 2011

Поддержка Unicode была «исправлена» в 3.x.Обычные строковые литералы хранятся как Unicode, а обычная функция open() получила аргумент encoding, что делает codecs.open() устаревшим.

    s = open(self.filename, 'w', encoding='utf-8')
    s.write(self.ui.editor_window.toPlainText())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...