Convertir un objeto Unicode en una cadena latina con entidades

Tengo un objeto Unicode como

x = u"a & 日本語: enči hallöle" 

y desea convertirlo en una cadena latin-1 con entidades html como

 "a & 日本語: enči hallöle" 

La razón detrás de esto es que quiero que mis usuarios puedan ingresar datos Unicode, pero mi base de datos heredada donde necesito guardar mis datos solo acepta cadenas latin-1. (el “ö” no se debe convertir, pero los otros caracteres especiales se deben convertir)

¿Alguna idea de qué módulo usar aquí? Busqué a través del módulo de encoding, busqué algunos códecs, probé un poco con métodos de objetos Unicode, pero no encontré una solución razonable.

Use la opción "xmlcharrefreplace" de unicode.encode , pero tenga en cuenta que no se traducirá & a & para ti:

 >>> x = "a & 日本語: enči hallöle".decode("utf-8") >>> x.replace("&", "&").encode("latin-1", "xmlcharrefreplace") 'a & 日本語: enči hall\xf6le' 

Simplemente codifique su archivo en UTF-8, que debe guardarse.

 >>> x.encode("UTF-8") 'a & \xc3\xa6\xc2\x97\xc2\xa5\xc3\xa6\xc2\x9c\xc2\xac\xc3\xa8\xc2\xaa\xc2\x9e: en\xc3\x84\xc2\x8di hall\xc3\x83\xc2\xb6le'