2009-08-11 11 views
15

El siguiente código Python funciona en mi máquina Windows (Python 2.5.4), pero no en mi máquina Debian (Python 2.5.0). Supongo que depende del sistema operativo.Compatibilidad con la configuración regional del sistema operativo para su uso en Python

import locale 
locale.setlocale(locale.LC_ALL, 'English_United States.1252') 

recibo el siguiente error:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.5/locale.py", line 476, in setlocale 
    return _setlocale(category, locale) 
locale.Error: unsupported locale setting 

Preguntas:

  • Es depende del sistema operativo?
  • ¿Cómo puedo encontrar la lista local admitida dentro de Python?
  • ¿Cómo puedo hacer una coincidencia entre Windows locales y lugares de Debian?
+3

¿tiene que codificar el entorno local? setlocale (LC_ALL, "") cargará la configuración regional definida por el entorno. – u0b34a0f6ae

Respuesta

21

Depende del sistema operativo.

Para obtener la lista de locales disponibles se puede utilizar en una cáscara de locale -a

Creo que el local que desea es algo así como Windows-1252

+7

no hay configuración regional -a en Windows – hwjp

+0

Esto me ayudó a identificar la configuración regional correcta que se debe establecer. – Cacovsky

8

observar el interior del diccionario locale.locale_alias.

>>> import locale 
>>> len(locale.locale_alias) 
789 
>>> locale.locale_alias.keys()[:5] 
['ko_kr.euc', 'is_is', 'ja_jp.mscode', '[email protected]', 'yi_us.cp1255'] 
>>> 

(En mi instalación 2.6.2 hay 789 nombres específicos.)

+5

En realidad, las configuraciones regionales definidas en el diccionario de alias no son necesariamente compatibles. – krawyoti

+0

Intenté una variación de esto que era list (set (locale.locale_alias.values ​​()) (valores en lugar de claves porque quiero los valores reales, y convertir a set y list de nuevo para retener solo valores únicos). Sin embargo, hay otra problema, como se plantea aquí (http://stackoverflow.com/questions/1728376/python-get-a-list-of-all-the-encodings-python-can-encode-to/1736533#1736533): ¿hay configuraciones regionales? que no tienen alias, y no estarán en el diccionario de alias en absoluto? – metamatt

9

tratar

apt-get install locales-all 

para mí funciona como un encanto

+0

Esto también es útil si uno desea configurar las configuraciones regionales de forma selectiva: http://tlug.dnho.net/node/237 –

+2

Si desea sea ​​un poco más selectivo, puede instalar uno de los paquetes de idioma- *, por ejemplo, paquete-de-idioma. –

+0

¿sabe cuál es la equivocación yum? yum install locales-all doesnt work. – timh

1

En Ubuntu tipo preciso

sudo locale-gen en_ES

Cuestiones relacionadas