在Python中将Unicode UTF-8数据写入文件的问题

0 投票
1 回答
2213 浏览
提问于 2025-04-16 18:43

我在我的Python程序中写入unicode到文件时遇到了一些问题。

这是用来“保存”文件的代码:

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

我正在使用Python 3.2,但似乎找不到问题出在哪里。

1 个回答

5

在3.x版本中,Unicode的支持得到了“修复”。普通的字符串现在都是以Unicode格式存储的,而且普通的 open() 函数增加了一个 encoding 参数,这样就不再需要使用 codecs.open() 了。

    s = open(self.filename, 'w', encoding='utf-8')
    s.write(self.ui.editor_window.toPlainText())

撰写回答