FC y tomcat, problemas con acentos y eñes

German Poo Caaman~o gpoo en ubiobio.cl
Mie Mar 23 23:27:04 CLT 2005


El mié, 23-03-2005 a las 18:57 -0400, Roberto Bonvallet escribió:
> Eduardo Quiroz Salinas escribio:
> > nada que ver tener que escribir con á 's y similares.
> 
> Si quieres que todos los usuarios lo vean de la misma manera, y si
> quieres respetar los estandares, *tienes* que hacerlo asi.  Si te da
> lata escribir cada entidad &loquesea;, utiliza un script como este:
> 
> ---- BEGIN spanish2html.sed ----
> #!/bin/sed -nf
> 
> # +--- En esta columna hay vocales con acento, u con dieresis y en~e.
> # |    Si no lo ves bien, corrigelo.
> # V
> s/á/\á/g
> s/é/\é/g
> s/í/\í/g
> s/ó/\ó/g
> s/ú/\ú/g
> s/ü/\ü/g
> s/ñ/\ñ/g
> 
> s/Á/\Á/g
> s/É/\É/g
> s/Í/\Í/g
> s/Ó/\Ó/g
> s/Ú/\Ú/g
> s/Ü/\Ü/g
> s/Ñ/\Ñ/g
> 
> s/¡/\¡/g
> s/¿/\¿/g
> 
> p
> ---- END   spanish2html.sed ----

El problema, es que tiene un conjunto limitado de caracteres.
Que tal si an~ade el simbolo de copyright? o una cedilla?
En Python al menos alguien ya se dio la lata de hacerlo, para
lo cual basta usar el modulo htmlentitydefs.

En Python se puede solucionar de la siguiente forma:

#!/usr/bin/env python

import htmlentitydefs
import sys

def textToEntities (oldtext):
    newtext = ""
    for ch in oldtext:
        c = ord (ch)
        if c > 0x7F:
            newtext += '&' + htmlentitydefs.codepoint2name[c] + ';'
        else:
            newtext += ch
    return newtext

if __name__ == "__main__":
    for line in sys.stdin:
        text = unicode (line, 'latin-1')
        print textToEntities (text),


Si el script se llamase 'text2entities.py', se utilizaria:

$ cat mi-archivo-en-latin-1 | ./text2entities.py

-- 
Germán Poó Caamaño
mailto:gpoo en ubiobio.cl



Más información sobre la lista de distribución Linux