Pergunta

Então, hoje eu atualizado para o bazar 2.0.2, e comecei a receber esta mensagem (eu estou em leopardo da neve, btw):

bzr: warning: unknown locale: UTF-8
  Could not determine what text encoding to use.
  This error usually means your Python interpreter
  doesn't support the locale set by $LANG (en_US.UTF-8)
  Continuing with ascii encoding.

muito estranho, já que minha LANG é realmente esvaziar. Algo semelhante acontece quando tento mexer com a localidade módulo

Python 2.5.4 (r254:67916, Nov 30 2009, 14:09:22) 
[GCC 4.3.4] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.getdefaultlocale()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/sbo/runtimes/lib/python2.5/locale.py", line 443, in getdefaultlocale
    return _parse_localename(localename)
  File "/Users/sbo/runtimes/lib/python2.5/locale.py", line 375, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

LANG exportação não ajuda

sbo@dhcp-045:~ $ export LANG=en_US.UTF-8
sbo@dhcp-045:~ $ bzr
bzr: warning: unknown locale: UTF-8
  Could not determine what text encoding to use.
  This error usually means your Python interpreter
  doesn't support the locale set by $LANG (en_US.UTF-8)
  Continuing with ascii encoding.

No entanto, isso resolveu o problema

sbo@dhcp-045:~ $ export LANG=en_US.UTF-8
sbo@dhcp-045:~ $ export LC_ALL=en_US.UTF-8

Python 2.5.4 (r254:67916, Nov 30 2009, 14:09:22) 
[GCC 4.3.4] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.getdefaultlocale()
('en_US', 'UTF8')

Você poderia explicar o que está acontecendo aqui, para melhor googlability?

Foi útil?

Solução

2016 Update: Acontece que este é um bug Python, pelo menos desde 2013, muito provavelmente mais cedo também, que consiste em Python não reagir bem ao não-GNU locales - como os encontrados em Mac oS X e os BSDs. O bug ainda está aberta a partir de setembro de 2016, e afeta todas as versões Python.


Se não houvesse conjunto variável de ambiente LANG, as chances são que você teve tanto uma LC_CTYPE (a variável-chave) ou LC_ALL (que substitui se configurada) variável de ambiente definido para UTF-8, que não é um OS X localidade válida. É fácil o suficiente para reproduzir com o /usr/bin/python fornecida pela Apple ou com uma python costume, como no seu caso, que foi construído com o 10,6 SDK (provavelmente também a 10,5 SDK). Você não será capaz de reproduzi-lo dessa forma com uma python python.org; que atualmente são construídos com o 10,4 SDK onde as APIs localidade comportar de maneira diferente.

$ unset LANG
$ env | grep LC_
$ export LC_CTYPE="UTF-8"
$ /usr/bin/python  # Apple-supplied python
Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale ; locale.getdefaultlocale()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/locale.py", line 459, in getdefaultlocale
    return _parse_localename(localename)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/locale.py", line 391, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8
^D
$ /usr/local/bin/python2.6   # python.org python
Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale ; locale.getdefaultlocale()
(None, 'mac-roman')
>>> 

EDIT:

Pode haver outra peça do quebra-cabeça. Um rápido olhar para o bzr 2.0.1 Eu tenho instalado indica que a mensagem que você citar só deve aparecer se locale.getpreferredencoding() levanta uma locale.Error. Uma maneira que pode acontecer é se a extensão python _locale.so C não pode ser carregado e que pode acontecer se houver problemas de permissão sobre ele. Por exemplo, MacPorts atualmente é conhecido por ter problemas para configurar permissões se você tiver um personalizado umask ; Eu fui queimado por essa questão sozinho. Verifique as permissões de _locale.so no diretório lib/python2.5/lib-dynload python e garantir que ele é 755. O caminho completo para MacPorts deve ser:

/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/

Outras dicas

Eu enfrentei o mesmo problema. Quando eu corri locale, notei que o LANG e LC_ALL foram desactivado. Então eu fixo isso adicionando as seguintes linhas no arquivo .bash_profile:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Então, eu simplesmente dizia:

source ~/.bash_profile 

E este problema foi corrigido posteriormente no meu Mac.

É um problema Mac OS X. Para ver suas configurações de localização, locale executar em terminal. locale -a deve listar todos os locais que você definiu (que você pode usar como argumento para LC_ALL).

Observe que LC_ALL e outros LC_* variáveis ??têm precedência sobre LANG quando definido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top