Как кодировать суррогатные пары Юникод, записать в файл - PullRequest
0 голосов
/ 18 октября 2019

Я создаю программу сжатия / шифрования, которая использует (почти) все символы Юникода, а затем записывает данные в файл. Однако для записи в файл мне нужно закодировать символы в байты. Тем не менее, когда я делаю это, он выдает эту ошибку:

unicodeencodeerror: 'utf-8' codec can't encode character '\udd7d' in position 1323: surrogates not allowed

Я перепробовал все встроенные кодеки Python, ни один из них не работает, кроме UTF-7, однако этопросто кодирует юникод в base64, что побеждает объект того, чего я пытаюсь достичь.

file = open(str(file_name.capitalize()) + ".Unicode_File","wb")
    file.write(unicode_madness.encode("utf-8"))
    file.close()

Я ожидаю, что он запишет в файл переменную 'unicode_madness', что иногда и происходитпытается использовать суррогатный символ Юникод.

Чтобы решить эту проблему, я либо должен избегать суррогатных символов (при сохранении сжатия без потерь), либо мне нужно выяснить, какие символы Юникода используют суррогаты, и я могу соответствующим образом настроить программу.

Спасибо за любую помощь!

...