[Python-es] acentos en MSDOS

Bartolomé Sintes Marco BartolomeSintes en ono.com
Vie Oct 18 07:28:37 CEST 2002


Muchas gracias a Marcos y Chema por intentar resolver mis problemas con los
acentos,
pero no me sirven vuestras sugerencias porque "necesito" una solución
simple.
Soy profesor de Instituto y estoy intentando enseñar a programar a alumnos
de
Bachillerato (tengo colgado el curso en www.mclibre.org, por si a alguien le
sirve).
El curso empieza desde cero y, cuando los alumnos todavía no saben lo que es
una función no creo que sea conveniente empezar a marearles con unicode.
Por eso me gustaría encontrar una solución simple, y por simple entiendo
modificar
algún archivo de configuración o un sitecustomize.py, es decir, que una vez
corregido no haya que preocuparse más. Porque al fin y al cabo, me parece un
poco
absurdo que el programa dé dos resultados distintos según que se haga en
IDLE o
en modo texto...

Envié anoche un mensaje a comp.lang.python a ver si alguien me sugería algo
y me
han contestado con el siguiente programa:
##### Principio del programa
sa = "Spanish accents: á é í ó ú" # som we can see sample.sa interactively
class L1to437:
    import sys
    def __init__(self):
        self.so = L1to437.sys.stdout
    def on(self):
        L1to437.sys.stdout = self
    def off(self):
        L1to437.sys.stdout = self.so
    def write(self, s):
        self.so.write(s.decode('latin-1').encode('cp437'))
so437 = L1to437()

if __name__ == '__main__':
    print "Before: Spanish accents: á é í ó ú"
    so437.on()
    print " On: Spanish accents: á é í ó ú"
    so437.off()
    print " Off: Spanish accents: á é í ó ú"
    end = raw_input()
##### Final del programa

Al leerlo ha parecido que tenía buena pinta. Pero al ejecutarlo en IDLE me
da el error siguiente:

Traceback (most recent call last):
  File "C:\Mis documentos\Barto\02-03 Abastos\Python\Acentos\Acentos en
vantena MSDOS - Solución 1.py", line 20, in ?
    print " On: Spanish accents: á é í ó ú"
  File "C:\Mis documentos\Barto\02-03 Abastos\Python\Acentos\Acentos en
vantena MSDOS - Solución 1.py", line 14, in write
    self.so.write(s.decode('latin-1').encode('cp437'))
  File "C:\PYTHON22\lib\encodings\cp437.py", line 18, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeError: charmap encoding error: character maps to <undefined>

y a partir de entonces no puedo ni grabar un archivo con IDLE. ¿Alguien
puede decirme
por qué falla y si se puede corregir el error? Mis alumnos y yo os lo
agradeceremos.

Gracias,
Barto





Más información sobre la lista de distribución Python-es