2009-08-11 16 views
15

Poniższy kod języka Python działa na moim komputerze z systemem Windows (Python 2.5.4), ale nie na moim komputerze z systemem Debian (Python 2.5.0). Zgaduję, że to zależy od systemu operacyjnego.Obsługa ustawień regionalnych systemu operacyjnego do użycia w języku Python

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

I pojawia się następujący błąd:

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 

pytania:

  • Czy to OS zależne?
  • Jak znaleźć obsługiwaną listę ustawień narodowych w języku Python?
  • Jak mogę dopasować między systemami Windows locales i lokalizacjami Debiana?
+3

Czy musisz zablokować kod lokalny? setlocale (LC_ALL, "") załaduje ustawienia narodowe zdefiniowane przez środowisko. – u0b34a0f6ae

Odpowiedz

21

Jest zależny od systemu operacyjnego.

Aby uzyskać listę lokalnych dostępnych można użyć locale -a w powłoce

myślę lokalny chcesz coś jak Windows-1252

+7

Brak ustawień regionalnych -a w oknach – hwjp

+0

Pomogło mi to określić prawidłowe ustawienia regionalne, które należy ustawić. – Cacovsky

8

zajrzeć do słownika 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'] 
>>> 

(W mojej instalacji 2.6.2 istnieje 789 nazwy kraju).

+5

W rzeczywistości ustawienia regionalne zdefiniowane w słowniku aliasów niekoniecznie są obsługiwane. – krawyoti

+0

Próbowałem odmiany tej, która była lista (set (locale.locale_alias.values ​​()) (wartości zamiast kluczy, ponieważ chcę rzeczywistych wartości i konwertować do zestawu i listy ponownie, aby zachować tylko unikatowe wartości). problem, jak podniesiono tutaj (http://stackoverflow.com/questions/1728376/python-get-a-list-all-the-encodings-python-can-encode-to/1736533#1736533): są tam locales które nie mają aliasów i nie będą w ogóle w słowniku aliasu? – metamatt

9

spróbować

apt-get install locales-all 

dla mnie to działa jak czar

+0

Jest to również przydatne, jeśli chce się selektywnie skonfigurować ustawienia lokalne: http://tlug.dnho.net/node/237 –

+2

Jeśli chcesz bądź nieco bardziej selektywny, możesz zainstalować jeden z pakietów language-pack- *, np. language-pack-de. –

+0

czy wiesz, czym jest dwuwiązek yum? yum install locales - wszystko nie działa. – timh

1

na Ubuntu dokładny typ

sudo locale-gen en_US

Powiązane problemy