【发布时间】:2017-10-12 16:39:41
【问题描述】:
我正在尝试通过更改 LANG 变量来更改 urxvt 当前会话中的编码。但是,它似乎不会立即适用。这是我的工作:
可用的语言环境:
$ locale -a
C
en_US.utf8
POSIX
ru_RU.koi8r
ru_RU.utf8
在设置新的语言环境之前:
$ echo "а" | od -t x1
0000000 d0 b0 0a # good! UTF-8
# | a ||NL|
之后:
$ export LANG=ru_RU.KOI8-R
$ echo "а" | od -t x1
0000000 d0 b0 0a # hm..expect 'c1 0a'
通过运行$ urxvt & fork 新的 urxvt 实例,最终得到我想要的:
$ echo "а" | od -t x1
0000000 c1 0a
为什么LANG 不首先改变行为?
【问题讨论】:
-
发布了适用于
bashshell 的答案,urxvt使用哪个登录 shell? -
urxvt读取了哪些启动文件,在此处添加更改区域设置的行。它应该在您的所有后续会话中反映出来。 -
可能它使用了 bash。
add the line with changing locale there- 问题根本不在于更改语言环境,而是在当前会话中更改它。我知道我可以将这一行放在 .bash_profile 或 .bashrc 中——但这不是我想要的。
标签: bash encoding terminal locale rxvt