【问题标题】:Why doesn't my terminal output unicode characters properly?为什么我的终端不能正确输出 unicode 字符?
【发布时间】:2023-03-25 07:10:01
【问题描述】:

例如,我的终端是这样做的:

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

我希望它这样做:

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

为什么?如何让我的终端输出正确的 unicode 符号?

我在 Arch Linux 上使用 Gnome 3 的终端。

locale 的输出显示:

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=

【问题讨论】:

  • 您使用的是什么操作系统?对于 OS X 尝试:终端 -> 首选项 -> 高级 -> 字符。编码:UTF-8
  • 除了 op sys,还要指定您使用的终端仿真程序(例如,gnome-terminal、xterm 或What is the best Linux terminal emulator? 中列出的其他程序),以及什么字符编码(例如 Unicode UTF-8)和字体被选中。在我的带有 gnome-terminal 和 UTF-8 和 Monospace Bold 的 ubuntu 12.04 linux 系统上,骷髅和交叉骨看起来没问题。
  • 我也在使用 Gnome 终端... 那么在哪里更改这些设置呢?嗯......我想知道运行locale 显示LANG=C 的脸是否是问题......嗯。
  • @trusktr 我的语言环境显示所有项目 = "en_US.UTF-8" ,但我仍然看不到 unicode 字符!

标签: bash shell command-line console terminal


【解决方案1】:

我想通了。我必须确保我在/etc/rc.conf 中设置了LANGUAGE="en_US.UTF-8",在/etc/locale.conf 中设置了LANG="en_US.UTF-8",然后注销并重新登录,它就可以工作了。我的终端现在可以正常显示 unicode。

【讨论】:

  • 对我不起作用,即使我的语言环境已经正确。
  • 现在每个人都在迁移到 systemd。如果您使用的是 systemd,则使用 rc.conf 不会做任何事情。
  • @trusktr 没有 rc.conf !只是一个 rc.local !
【解决方案2】:

如果您无法更改/etc/*文件,您可以手动将gnome-terminal菜单Terminal|Set Character Encoding设置为Unicode(Utf-8)

【讨论】:

  • 如果我可以更改 /etc/* ,我现在该怎么办?!
  • 这对我有用(使用 GNOME 终端 2.31.3),而更改环境变量却没有。
【解决方案3】:

我使用以下命令更新了我的语言环境:

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

然后重新启动:

sudo reboot

【讨论】:

    【解决方案4】:

    我在切换到新电脑后试图解决这个问题。我正在使用Windows TerminalUbuntuWSL2 上注入Win 10

    我尝试了此处提供的建议并重新启动;没有变化。

    解决方案

    我的解决方法是安装 patched nerd font 并将字体设置为 Windows 终端设置中每个配置文件的默认字体。

    【讨论】:

      猜你喜欢
      • 2020-04-02
      • 2015-08-30
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多