trusktr
trusktr

Reputation: 45454

Why doesn't my terminal output unicode characters properly?

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

Answers (5)

Matthias Braun
Matthias Braun

Reputation: 34293

with 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

OldBuildingAndLoan
OldBuildingAndLoan

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.

enter image description here

Upvotes: 1

Ben
Ben

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

Nimlar
Nimlar

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

trusktr
trusktr

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

Related Questions