写入rtf时python编码问题

写入rtf时python编码问题,python,python-3.x,utf-8,rtf,Python,Python 3.x,Utf 8,Rtf,我正在使用python3并使用python写入rtf文件,但在使用charø(也称为“\u00f8”)时会出现一些编码问题。 代码如下: >>> myText = "a \u00f8 b" >>> myText 'a ø b' >>> out_file = open('test.rtf', 'w', encoding='utf8') >>> textForFile = "{\\rtf1\\utf8 " + myText +

我正在使用python3并使用python写入rtf文件,但在使用charø(也称为“\u00f8”)时会出现一些编码问题。 代码如下:

>>> myText = "a \u00f8 b"
>>> myText
'a ø b'

>>> out_file = open('test.rtf', 'w', encoding='utf8')
>>> textForFile = "{\\rtf1\\utf8 " + myText + "}"

>>> out_file.write(textForFile)
18
>>> out_file.close()
文件test.rtf现在包括以下文本:

a ˆ‚ b
而不是:

'a ø b'

知道我在编码中遗漏了什么吗?

解决这个问题的关键是用cp1252对python文件进行编码,并在rtf代码中使用ansicpg1252。我发现了ansicpg1252的想法。现在,TextEdit、LibreOffice和OpenOffice都能正确打开文件

正确代码:

>>> myText = "a \u00f8 b"
>>> myText
'a ø b'
>>> out_file = open('test.rtf', 'w', encoding='cp1252')
>>> textForFile = "{\\rtf1\\ansicpg1252" + myText + "}"
>>> out_file.write(textForFile)
>>> out_file.close()

我认为问题在于你是否以utf-8格式打开这个文件?我指的是你的编辑器。是的,我在mac上用TextEdit打开它,根据偏好,它使用utf-8encoding@DevB2F删除
编码='utf8'
,然后重试。我在windows中尝试了这个方法,当我打开
.rtf
文件时,它会显示
aøb
。当我使用
encoding='utf8'
时,它会显示
aøb
@DevB2F是否安装了MS word?试试微软Word。如果它仍然没有显示预期的输出,那么我们可以将其标记为macos文本编辑问题。