[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