Python 如何编码unicode代理项对,写入文件

Python 如何编码unicode代理项对,写入文件,python,unicode,encoding,surrogate-pairs,Python,Unicode,Encoding,Surrogate Pairs,我正在创建一个使用(几乎)所有unicode字符的压缩/加密程序,然后将数据写入文件。但是,要写入文件,我需要将字符编码为字节。但是,当我这样做时,会出现以下错误: unicodeencodeerror: 'utf-8' codec can't encode character '\udd7d' in position 1323: surrogates not allowed 我已经尝试了所有内置python编解码器,除了“utf-7”之外,它们都不起作用,但是,这只是将unicode编码为b

我正在创建一个使用(几乎)所有unicode字符的压缩/加密程序,然后将数据写入文件。但是,要写入文件,我需要将字符编码为字节。但是,当我这样做时,会出现以下错误:

unicodeencodeerror: 'utf-8' codec can't encode character '\udd7d' in position 1323: surrogates not allowed
我已经尝试了所有内置python编解码器,除了“utf-7”之外,它们都不起作用,但是,这只是将unicode编码为base64,这与我试图实现的目标背道而驰

file = open(str(file_name.capitalize()) + ".Unicode_File","wb")
    file.write(unicode_madness.encode("utf-8"))
    file.close()
我希望它将变量“unicode_madness”写入文件,但有时它会尝试使用代理unicode字符

要解决这个问题,我要么需要能够避免使用代理字符(同时保持压缩无损),要么需要找出哪些unicode字符使用代理,并相应地调整程序


谢谢你的帮助

不要为加密使用代理字符:。最相关的是:“官方的Unicode标准规定,任何UTF格式,包括UTF-16,都不能对这些代码点进行编码。”在出现什么Unicode字符之后,代理出现了?我使用chr()/ord()来加密数据,应该避免哪些数字?URL中给出了范围。这是什么ord()数字?将Unicode(str)编码为UTF-8(字节),然后加密。