Когда я копирую и вставляю предложение How brave they’ll all think me at home!
в пустой документ TextEdit RTF на Mac, это выглядит нормально. Но если я создаю явно идентичный rtf-файл программно и записываю в него одно и то же предложение, при открытии TextEdit он выглядит как How brave they’ll all think me at home!
. В следующем коде output
в порядке, но при просмотре файла в TextEdit возникают проблемы с правая одинарная кавычка (здесь используется как апостроф), Unicode U-2019.
header = r"""{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf400
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\f0\fs24 \cf0 """
sen = 'How brave they’ll all think me at home!'
with open('staging.rtf', 'w+’) as f:
f.write(header)
f.write(sen)
f.write('}')
with open('staging.rtf') as f:
output = f.read()
print(output)
Я обнаружил из https://www.i18nqa.com/debug/utf8-debug.html, что это может быть вызвано «байтами UTF-8, интерпретируемыми как Windows-1252», и это имеет смысл, так как кажется, что ansicpg1252
в заголовке указывает на американскую Windows ,
Но я все еще не могу понять, как это исправить, даже прочитав похожую проблему здесь: Кодировка файла rtf . Я пытался заменить ansi
на mac
безрезультатно. И добавление ,encoding='utf8'
к функции открытия, похоже, тоже не поможет.
(Между прочим, причина использования rtf заключается в возможности экспортировать предложения со словами с цветовой кодировкой, разрешить их редактирование вручную, а затем считывать обратно для дальнейшей обработки).