El día 6 de junio de 2013 22:28, Alejandro Druetta <[email protected]> escribió: > Hola Guillermo, gracias por tu ayuda. > > En realidad, si en el código original sustituyes title por capitalize, > funciona perfectamente, no hace falta cambiar nada más. Mi duda era cómo > hacer funcionar title, que es lo que está dando problemas por el tema de la > codificación.
Habría que empezar distinguiendo tres codificaciones: - la que usa el fichero de código - la que usa la cónsola donde sacas el texto - la codificación unicode nativa La primera, que pones como cabecera del código, sirve para indicar la codificación de las cadenas de texto a partir de las cúales inicializas las variables unicode. Concretamente, en el código no tienes ninguna, así que no influye en nada. La segunda, la de la cónsola. De lo que cuentas es imposible saber cuál usas, pero es posible determinar la que tiene el usuario de 'sys.stdout.encoding'. Todas tus cadenas deberían estar en esta codificación, incluídas los "prompts" de raw_input. La tercera, unicode nativa. Advertir que no es utf-8, ni utf-16, ni utf-32 ... La codificación unicode está basada en códigos codepoints que, de momento, ninguna cónsola sabe interpretar. Necesitamos convertir las cadenas unicode a la codificación de la cónsola antes de imprimirlas. Para complicarlo un poco más, las funciones raw_input e input tienen problemas para usar cadenas unicode como prompts. La solución pasaría por usar siempre unicode en tus cadenas de texto y tratar de codificarlas según necesite la cónsola de texto, que sería algo así: prompt = u"¿Cómo se escribe %s en %s: "% ( i, lengua ) palabra = raw_input(prompt.encode(sys.stdout.encoding)).decode(sys.stdin.encoding) Refactorizando un poco, ésta sería una versión funcional: http://pastebin.com/sj8Uu6ZB -- Hyperreals *R: http://ch3m4.org/blog Quarks, bits y otras criaturas infinitesimales _______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
