Dado en "cadena" arbitraria de una biblioteca que no tengo control, quiero asegurarme de que la "cadena" es un tipo Unicode y está codificada en utf-8. Me gustaría saber si esta es la mejor manera de hacer esto:¿Es esta la mejor manera de garantizar que una "cadena" unicode de python esté codificada en utf-8?
import types
input = <some value from a lib I dont have control over>
if isinstance(input, types.StringType):
input = input.decode("utf-8")
elif isinstance(input, types.UnicodeType):
input = input.encode("utf-8").decode("utf-8")
En mi código real envuelvo esto en un try/excepto y controlar los errores pero dejó esa parte.
Estoy pasando esta cadena a otra lib que es una lib de C++ que necesita cadenas unicode codificadas en utf-8. ¿Es posible garantizar que la codificación del tipo Unicode sea UTF-8? – mcot
¿La biblioteca C++ requiere interacción con la codificación interna del tipo Unicode de Python? Esto es dudoso y no creo que pueda cambiar trivialmente la codificación interna a UTF-8. Por otro lado, puede obtener un objeto str de Python, codificado en UTF-8: my_unicode_string.encode ('utf-8'). –
¡Genial! Encontré tu respuesta después de 10 horas dolores de cabeza. –