Solicitudes de Python que codifican datos POST

Versión: Python 2.7.3

Otras bibliotecas: Python-Requests 1.2.3, jinja2 (2.6)

Tengo un script que envía datos a un foro y el problema es que los caracteres que no son ASCII aparecen como basura. Por ejemplo, un nombre como André Téchiné aparece como André Téchiné.

Así es como se envían los datos:

1) Los datos se cargan inicialmente desde un archivo CSV codificado en UTF-8 así:

entries = []
with codecs.open(filename, 'r', 'utf-8') as f:
    for row in unicode_csv_reader(f.readlines()[1:]):
        entries.append(dict(zip(csv_header, row)))

unicode_csv_reader se encuentra en la parte inferior de la página de documentación de Python CSV:http://docs.python.org/2/library/csv.html

Cuando escribo el nombre de las entradas en el intérprete, veo el nombre comou'Andr\xe9 T\xe9chin\xe9'.

2) A continuación renderizo los datos a través de jinja2:

tpl = tpl_env.get_template(u'forumpost.html')
rendered = tpl.render(entries=entries)

Cuando escribo el nombre representado en el intérprete, vuelvo a ver lo mismo:u'Andr\xe9 T\xe9chin\xe9'

Ahora, si escribo la variable renderizada en un nombre de archivo como este, se muestra correctamente:

with codecs.open('out.txt', 'a', 'utf-8') as f:
    f.write(rendered)

Pero debo enviarlo al foro:

3) En el código de solicitud POST tengo:

params = {u'post': rendered}
headers = {u'content-type': u'application/x-www-form-urlencoded'}
session.post(posturl, data=params, headers=headers, cookies=session.cookies)

sesion es una sesion de solicitudes.

Y el nombre se muestra roto en la publicación del foro. He probado lo siguiente:

Omitir encabezadosCodificar renderizado como rendering.encode ('utf-8') (mismo resultado)rendering = urllib.quote_plus (rendering) (sale como todo% XY)

Si escribo rendering.encode ('utf-8') veo lo siguiente:

'Andr\xc3\xa9 T\xc3\xa9chin\xc3\xa9'

¿Cómo podría solucionar el problema? Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta