Reputation: 45454
For example, my terminal does this:
$ echo -e "\xE2\x98\xA0"
���
I expect it to do this:
$ echo -e "\xE2\x98\xA0"
☠
Why? How do I make my terminal output the proper unicode symbols?
I'm using Gnome 3's Terminal on Arch Linux.
The output of locale
shows:
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=
Upvotes: 57
Views: 131934
Reputation: 34293
localectl
Possibly through an erroneous line in my .bash_profile
, the only thing that helped was:
localectl set-locale en_US.UTF-8
and then rebooting.
The probably problematic line in .bash_profile
was:
# ⚠️ Better not do this
export LANG="en_US.utf8"
Notice the difference between ".utf8" and ".UTF-8".
Before running localectl set-locale en_US.UTF-8
the output of localectl status
was:
System Locale: LANG=C
VC Keymap: (unset)
X11 Layout: (unset)
After running it:
System Locale: LANG=en_US.UTF-8
VC Keymap: (unset)
X11 Layout: (unset)
This solved an issue with running fzf in the Linux virtual console and I can now display umlauts and other non-ASCII characters in the virtual console on Arch Linux.
Related questions:
Upvotes: 0
Reputation: 3022
I was trying to solve this after switching to a new PC. I'm using Windows Terminal
with Ubuntu
instilled in WSL2
on Win 10
.
I tried the suggestions provided here and rebooted; no change.
Solution
The fix for me was installing a patched nerd font and setting the font as the default font for each profile in Windows Terminal settings.
Upvotes: 1
Reputation: 6348
I updated my locale with the following command:
sudo update-locale LANG=en_US.UTF-8 LANGUAGE=en.UTF-8
then rebooted:
sudo reboot
Upvotes: 14
Reputation: 655
In case you cannot change /etc/*
files, you can manually set the gnome-terminal
menu Terminal
|Set Character Encoding
to Unicode(Utf-8)
Upvotes: 11
Reputation: 45454
I figured it out. I had to make sure I set LANGUAGE="en_US.UTF-8"
in /etc/rc.conf
and LANG="en_US.UTF-8"
in /etc/locale.conf
, then logged out and logged back in and it worked. My terminal displays unicode properly now.
Upvotes: 18