Я создаю программу сжатия / шифрования, которая использует (почти) все символы Юникода, а затем записывает данные в файл. Однако для записи в файл мне нужно закодировать символы в байты. Тем не менее, когда я делаю это, он выдает эту ошибку:
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', что иногда и происходитпытается использовать суррогатный символ Юникод.
Чтобы решить эту проблему, я либо должен избегать суррогатных символов (при сохранении сжатия без потерь), либо мне нужно выяснить, какие символы Юникода используют суррогаты, и я могу соответствующим образом настроить программу.
Спасибо за любую помощь!