Непонятно, зачем вам это нужно, но вот как вы могли бы представить символы Unicode без BMP в качестве суррогатных пар:
#!/usr/bin/env python3
import re
def as_surrogates(astral):
b = astral.group().encode('utf-16be')
return ''.join([b[i:i+2].decode('utf-16be', 'surrogatepass')
for i in range(0, len(b), 2)])
s = '\U0001f62c \U0001f60e hello'
u = re.sub(r'[^\u0000-\uFFFF]+', as_surrogates, s)
print(ascii(u))
assert u.encode('utf-16', 'surrogatepass').decode('utf-16') == s
'\ud83d\ude2c \ud83d\ude0e hello'