Um perfil do Gnome Terminal pode usar UTF-8 por padrão?

19

Estou em um sistema Ubuntu (eu acho). Eu não têm raiz, por isso não posso alterar a localidade. Desejo que meu perfil de terminal padrão use UTF-8 por padrão. Deve haver uma maneira de fazer isso, no .gconf/apps/gnome-terminal/diretório em algum lugar ou em uma variável de ambiente ou algo assim. No entanto, parece que não consigo encontrá-lo.

Edite com mais detalhes:

Em um terminal, eu tenho:

grid-unv55$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
grid-unv55$ gnome-terminal

Quando tento mais um documento UTF nesse novo terminal, recebo:

\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd
\noise:bgspeech \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd

Que aparece na minha tela como pontos. (os uffds eram recortados e colados. Deixei o "\ noise: bgspeech" lá para que você pudesse ver que os ascii eram recortados e colados corretamente)

Brian Postow
fonte

Respostas:

12

Eu acredito que o gnome-terminal Just Work with UTF-8 está ativado no shell, então tudo que você precisa fazer é habilitar isso . Colocar

export LANG=en_US.UTF-8

em ~/.bashrce lá vai você.


EDITAR:

Ok, então a resposta é que atualmente você não pode definir isso . O Terminal Gnome segue a configuração LANG do ambiente atual e usa a codificação como padrão. Portanto, você precisa fazer com que o LANG contenha UTF-8 antes do gnome-terminal ser lançado. Definir isso ~/.bashrcdeve fazê-lo - você só precisará sair e fazer login novamente.

(Observe que é realmente melhor colocar isso ~/.bash_profilepara que você possa substituí-lo por subshells, mas não tenho certeza de que o bash seja necessariamente executado como um shell de login como parte da configuração do ambiente Gnome. Vale a pena testar ...)

mattdm
fonte
1
parece não funcionar.
precisa saber é o seguinte
Hmm. O que $ LANG está definido por padrão? Colocar isso no seu bashrc faz mudar?
18118 mattdm em:
C, e colocá-lo no bashrc fez mudar. Concedido, não fiz o logout e o logon novamente, mas iniciei um novo terminal e ele começou com UTF no LANG (e o local também está definido com UTF), mas o terminal ainda não mostra japonês ...
Brian Postow
1
Antes, ele estava apenas sendo colocado no shell dentro do terminal gnome. Agora, está sendo definido no ambiente em que o próprio gnome-terminal é executado.
mattdm
2
No Ubuntu 10.04, você pode definir variáveis ​​de ambiente para toda a sessão de ~/.profile- not~/.bashrc , e também não~/.bash_profile .
Gilles 'SO- stop be evil'
9

Você pode definir o código do idioma gnome-terminalcom o seguinte comando, onde Defaulté o nome do perfil.

gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding en_US.UTF-8
Michael Mior
fonte
Isso funcionou para mim. Mas era desnecessário após a alteração LANG=en_US.UTF-8no .bashrce reiniciar
Antonios Hadjigeorgalis
Trabalhou muito bem para mim!
187 Josh
7

Eu tive um problema semelhante, e ao definir LANGem .bash_profilenão fazer o truque, eu descobri que no Gnome, a localidade padrão pode ser definido no início de uma sessão de tela de login GDM. Isso pode ser feito sem acesso root.

phreeza
fonte
3

Acabei de fazer o check-in menu->terminal->set character encodingé utf-8

O terminal e o bash não são a mesma coisa.

Eu começaria fazendo cat utf-8-file(cat e bash passarão esse arquivo inalterado para o terminal (na verdade, para stty, stty converterá nova linha em retorno de carrage, nova linha etc.)) se isso exibir o arquivo corretamente, então o gnome-terminal está configurado. (Até agora, é tudo o que eu já fiz, pois uso o utf-8 em inglês; ele já foi configurado no Ubuntu 10.10 e Debian 6 para mim). Então, apenas para configurar o bash etc.

Relendo ~ / .bashrc

Se você editar, ~/.bashrcvocê deve relê-lo . ~/.bashrc(ou iniciar um novo shell) (não esqueça o ponto)

ctrl-alt-delor
fonte
1
Quando altero manualmente a codificação de caracteres para utf-8, é onde o faço, mas quando inicio um novo terminal gnome, mesmo a partir de um terminal com a localidade correta, a codificação ainda é ascii. Vou adicionar mais detalhes à pergunta.
Brian Postow
3

Eu tive um problema agora que corrigi que pode ser relevante para os novatos com versões mais recentes do GNOME (e do gnome-terminal):

Para qualquer codificação de texto que você deseja usar, o shell (por exemplo, bash) e o emulador de terminal (por exemplo, gnome-terminal) devem usar a mesma codificação. Por exemplo, se o shell usa en_US.utf8e o emulador de terminal usa en_US.ISO-8859-1(aka latin1), você verá um texto estranho no seu terminal para qualquer programa com saída UTF-8.

Agora, não consigo definir a codificação no login, como já vi sugerido, seria possível. Isso pode ser devido ao fato de termos uma versão mais antiga do GDM aqui no trabalho. É por isso que eu precisava de uma solução diferente.

De qualquer forma, o GNOME 3 não parece ter origem .bashrcou .profilelogin automaticamente . Mas é fonte .gnomerc, na qual você pode colocar variáveis ​​de ambiente que serão exportadas para os programas GNOME (tanto quanto eu sei).

Colocando export LANG="en_US.utf8"em .gnomercassim começa gnome-terminal usando uma codificação UTF-8 por padrão, quando uma nova instância é iniciada. (Altere seu código do idioma de acordo com suas necessidades.)

Espero que isso tenha sido útil para alguém!

Vencedor
fonte
-1

Conforme mencionado por outros usuários, informe ao shell qual codificação você está usando com

export LANG=en_US.UTF-8

Coloque isso em .bashrc e o gnome-terminal deve buscá-lo no próximo login.

Defina a codificação para o terminal gnome rapidamente : Barra de menus> Terminal> Definir codificação de caracteres

Defina a codificação padrão permanentemente: gconf-editor> Aplicativos> gnome-terminal> Perfis> Padrão> codificação> utf-8

Edward Falk
fonte
2
Isso não é bem verdade. Para mim, tenho um arquivo .profile e .bashrc. Meu shell de login é bash. O gnome-terminal ignora as configurações de LANG em .bashrc se entrar em conflito com as configurações de LANG em .profile. Portanto, o LANG precisa ser definido nos dois arquivos.
Gary
Mais ou menos ... meu entendimento é que o bash usa .profile para shells de login e .bashrc de outra forma. No Linux, as novas janelas de comando usam .bashrc (no Mac, é .profile ). Não conheço nenhuma circunstância em que ambas sejam executadas automaticamente, mas é extremamente comum colocar toda a sua configuração em uma e depois chamá-la pela outra. Normalmente, .bashrc é executado a partir de .profile (geralmente apenas a partir de shells interativos). if [ -n "$BASH_VERSION" -a -f "$HOME/.bashrc"; then . "$HOME/.bashrc"; fi
Edward Falk