[pyar] Problema con encoding

Mariano Reingart reingart en gmail.com
Mar Jul 26 16:44:47 ART 2011


2011/7/26 Andrés Gattinoni <andresgattinoni en gmail.com>:
> 2011/7/26 Andrés Gattinoni <andresgattinoni en gmail.com>:
>> 2011/7/26 Mariano Reingart <reingart en gmail.com>:
>> Quizás mi problema es no entender verdaderamente cómo está codificado
>> ese string de la variable rendered que obtengo del método
>> template.render() de web2py.
>
> Bueno, lo resolví volviendo a lo básico. Volé a la mierda todo lo que
> era codecs, encode, etc. y salió andando:
>
> def render (filename, template_file, data):
>    tplfile = open(template_file, 'r')
>    html = tplfile.read()
>    tplfile.close()
>    f = open(filename, 'w')
>    rendered = template.render(html, context=data)
>    f.write(rendered)
>    f.close()
>
> Ahora me queda ver nomás por qué el render no le está dando pelota al
> código del template... pero eso es otra historia :P
>

Justo te estaba escribiendo que no utilices codecs.open, solo
confunde, y como decia antes, no es garantía de que funcione
correctamente el tema de encodings.

Por lo que veo, template lo maneja de esta forma (por compatibiliad con python3)

# -*- coding: utf-8 -*-
import sys
import codecs
from gluon import template

def render (filename, template_file, data):
   tplfile = open(template_file, 'r')
   html = tplfile.read()
   tplfile.close()
   f = open(filename, 'w')
   rendered = template.render(html, context=data)
   print type(rendered)
   print rendered
   f.write(rendered)
   f.close()


render("/tmp/prueba.txt","/tmp/template.txt", {'a': u'ñ'})

Con /tmp/template.txt:

Esto está en UTF8
{{=a}}

Deberìa guardar:

Esto está en UTF8
ñ

Data es un diccionario no?

Sds

Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com



More information about the pyar mailing list