Con*_*ser 19 locale environment-variables utf-8
我在让 zsh 与 Debian Jessie 一起玩的过程中度过了一段糟糕的时光,我得出的结论是我的问题都源于我系统的语言环境。跑步locale,我明白了
LANG=en_US.utf8
LANGUAGE=
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
但是/etc/default/locale包含LANG=en_US.UTF-8as do /etc/environment,而我的/etc/locale.gen文件只有未en_US.UTF-8 UTF-8注释。
locale报告的内容(微妙地)与我系统上看似所有其他选项不同,并且locale?use*_*686 19
“正确的”名称是UTF-8. 但是,Linux glibc会在内部规范化编码名称,将其转换为小写并删除大多数特殊字符,因此两种变体都可以使用(只要它们不转义到 BSD 系统)。
大多数情况下.utf8,$LANG 中的后缀来自 GNOME;afaik,这已在 3.18 中修复。
但是,上面说,无论是utf8和UTF-8将工作在Linux的glibc以同样的方式-这个问题来自其他地方。由于您没有写出问题所在,这里有一个通用清单:
locale -a(可用语言环境)是否显示任一变体?即您是否在编辑 locale.gen 后生成(使用locale-gen)语言环境?
请问终端仿真器的环境中具有相同的区域设置?使用cat /proc/$(pidof xterm)/environ | tr \\0 \\n检查另一个进程的环境。
(人们经常尝试从他们的~/.bashrc或类似的文件中设置语言环境环境变量,但环境变量不会“向上”传播,因此最终结果。)
什么printf '\xe2\x99\xa5'输出?如果显示一个方框或问号,则表示该字体没有必要的字符。如果它显示三个垃圾字符,则表示您的终端没有正确的 $LANG(或者只是不支持 UTF-8)。
| 归档时间: |
|
| 查看次数: |
14494 次 |
| 最近记录: |