Python pyqt5 QTextEdit Windows 10 ASCII符号
我使用PyQt5和QTextEdit小部件。我想从文件中获取纯文本并在QTextEdit中显示它。这是我在文本文件中的内容 这就是我初始化QTextEdit的方式Python pyqt5 QTextEdit Windows 10 ASCII符号,python,windows,pyqt5,ascii,qtextedit,Python,Windows,Pyqt5,Ascii,Qtextedit,我使用PyQt5和QTextEdit小部件。我想从文件中获取纯文本并在QTextEdit中显示它。这是我在文本文件中的内容 这就是我初始化QTextEdit的方式 self.info_text_edit.setPalette(palette) font = QtGui.QFont() font.setFamily("Courier") font.setPointSize(10) font.setStyleStrategy(QtGui.QFont.NoAntialias) self.info_t
self.info_text_edit.setPalette(palette)
font = QtGui.QFont()
font.setFamily("Courier")
font.setPointSize(10)
font.setStyleStrategy(QtGui.QFont.NoAntialias)
self.info_text_edit.setFont(font)
self.info_text_edit.setLineWrapMode(QtWidgets.QTextEdit.WidgetWidth)
self.info_text_edit.setReadOnly(True)
那么,对于附加一个文本,我只需要这样做
self.info_text_edit.append(str(msg))
在Linux上使用这种方法,一切都很好。但这就是我在Windows上看到的结果
编码\解码出错 当我将
msg
写入文件时,我应该执行以下操作:
import platform
if platform.system() == "Linux":
msg = str(msg)
elif platform.system() == "Windows":
msg = str(msg).encode("utf-8").decode('cp1251')
然后,当我从文件中读取msg
时,我应该执行以下操作:
import platform
if platform.system() == "Linux":
self.info_text_edit.append(str(msg))
elif platform.system() == "Windows":
self.info_text_edit.append(str(msg).encode('cp1251').decode('utf-8'))
缺少的是您写入此文本编辑的确切文本。这难道不只是使用了错误的编码(比如UTF-8)吗?UTF-8中编码的字符是
0xE2 0x96 0x88
或的–ˆ
(对于我的系统,实际的3个字符显示取决于活动的Windows代码页)。@usr2564301对于这种情况-正确。但是可能有任何角色,当然它们也会以同样的方式被破坏。但是如何以及为什么,我们无法判断您是否没有帮助我们帮助您。@usr2564301我在第一张图片中看到的是正确的。我想在我的QTextedit里看到同样的我明白了。msg
中有什么,为什么它需要转换为str
(如果它还不是字符串)?这似乎是原因。这就是我想知道的。