Estoy usando argparse
para leer los argumentos de mi código python. Una de esas entradas es un título de un archivo [title
] que puede contener caracteres Unicode. He estado usando 22少女時代22
como una cadena de prueba.Python Unicode Encoding
necesito para escribir el valor de la entrada title
a un archivo, pero cuando trato de convertir la cadena en UTF-8
siempre genera un error:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8f in position 2: ordinal not in range(128)
He estado buscando alrededor y ver lo que necesito mi cadena está en el formulario u"foo"
para llamar al .encode()
.
Cuando corro type()
en mi entrada desde argparse
veo:
<type 'str'>
Estoy buscando para obtener una respuesta de:
<type 'unicode'>
¿Cómo puedo conseguirlo en la forma correcta?
Idea:
Modificar argparse
a tomar en un str
pero la almacena como una cadena Unicode u"foo"
:
parser.add_argument(u'title', metavar='T', type=unicode, help='this will be unicode encoded.')
Este enfoque no funciona en absoluto. ¿Pensamientos?
Edición 1:
algunos ejemplos de código, donde title
es 22少女時代22
:
inputs = vars(parser.parse_args())
title = inputs["title"]
print type(title)
print type(u'foo')
title = title.encode('utf8') # This line throws the error
print title
¿Qué codificación tienen sus datos de entrada? –
@MarkTolonen Ok, editaré mi publicación. – Morrowind789