2012-09-29 3 views
34

Per esempio, mio ​​terminale fa questo:Perché il terminale non emette i caratteri unicode correttamente?

$ echo -e "\xE2\x98\xA0" 
��� 

mi aspetto di fare questo:

$ echo -e "\xE2\x98\xA0" 
☠ 

Perché? Come faccio a rendere il mio terminale in uscita i simboli Unicode corretti?

Uso il terminale di Gnome 3 su Arch Linux.

L'uscita del locale mostra:

LANG=C 
LC_CTYPE="C" 
LC_NUMERIC="C" 
LC_TIME="C" 
LC_COLLATE="C" 
LC_MONETARY="C" 
LC_MESSAGES="C" 
LC_PAPER="C" 
LC_NAME="C" 
LC_ADDRESS="C" 
LC_TELEPHONE="C" 
LC_MEASUREMENT="C" 
LC_IDENTIFICATION="C" 
LC_ALL= 
+0

Quale sistema operativo stai usando? Per OS X prova: Terminale -> Preferenze -> Avanzate -> Carattere. Codifica: UTF-8 – by0

+0

Oltre a op sys, specificare anche quale programma di emulazione di terminale si utilizza (ad esempio, gnome-terminal, xterm o altri elencati in [Qual è il miglior emulatore di terminale Linux?] (Http://superuser.com/ domande/80506)) e quale codifica dei caratteri (ad es. Unicode UTF-8) e tipo di carattere è selezionata. Sul mio sistema linux Ubuntu 12.04 con gnome-terminal e UTF-8 e Monospace Bold il teschio e le ossa incrociate appaiono ok. –

+0

Sto usando anche Gnome Terminal ... Quindi dove cambio queste impostazioni? Hmmmm .... Mi chiedo se la faccia che esegue 'locale' mostra' LANG = C' è il problema ... hmmmmm. – trusktr

risposta

7

ho capito. Dovevo assicurarmi di impostare LANGUAGE="en_US.UTF-8" in /etc/rc.conf e LANG="en_US.UTF-8" in /etc/locale.conf, quindi disconnettersi e riconnettersi e ha funzionato. Il mio terminale visualizza unicode correttamente ora.

+9

Non ha funzionato per me, anche se la mia localizzazione è già corretta. –

+3

Tutti si stanno spostando su systemd in questi giorni. Se stai usando systemd, usare rc.conf non farà nulla. – trusktr

+0

@trusktr Non c'è rc.conf! Solo un rc.local! –

8

Se non è possibile modificare i file /etc/*, è possibile impostare manualmente il menu gnome-terminalTerminal | Set Character Encoding-Unicode(Utf-8)

+4

E se posso cambiare/etc/*, cosa dovrei fare ora ?! –

2

ho aggiornato il mio locale con il seguente comando:

sudo update-locale LANG=en_US.UTF-8 LANGUAGE=en.UTF-8 

poi riavviato:

sudo reboot