He estado sacando mi pelo sobre este tema durante varias horas ahora.
Tengo un archivo de mensajes que quiero generar usando el comando makemessages de django, que funciona bien en un entorno Linux que en realidad maneja la configuración regional de una manera sana. Sin embargo, cuando bash lo mismo en Windows, cada vez que Python intenta abrir un archivo, asume que está codificado en cp932
(SHIFT-JIS), lo que provoca todo tipo de caos.
La adición manual de encoding='utf-8'
a cada llamada open
funciona, pero no es una buena manera de solucionar el problema. ¿Hay alguna forma de forzar la open
para usar una encoding predeterminada específica?
sys.getdefaultencoding()
devuelve ‘utf-8’, por alguna razón, esta configuración no se respeta cp65001
Esta es la cadena de mi versión de python:
Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:06:53) [MSC v.1600 64 bit (AMD64)] on win32
EDITAR: Me he dado cuenta de que locale.getpreferredencoding()
devuelve cp932
, por lo que supongo que encontrar una configuración regional de Windows con utf-8
como su valor predeterminado sería suficiente. ¿Existe tal cosa incluso?
Prueba esto
import locale locale.setlocale(locale.LC_ALL, 'en_US.utf-8')