如何修复我的语言环境以在 irssi 中正确显示 Unicode?

如何修复我的语言环境以在 irssi 中正确显示 Unicode?

我刚到我的新实验室和日本,我能使用的服务器只有日语区域设置。调用locale -a返回

C
POSIX
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

因此我更改了环境变量,现在我的语言环境已设置为ja_JP.utf8可以很好地支持 Unicode。调用 locale 现在返回(从 eucjp 更改):

LANG=ja_JP.utf8
LANGUAGE=
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=

无论我使用的是 less、emacs 还是 vim,并且是从 PuTTY 或带有 cygwin 的远程 xterm 连接,我都可以很好地读取包含 Unicode 中日文字符的文件。它似乎也能很好地显示其他 Unicode 字符。

但问题来了:如果我用日语输入一些东西,似乎会出错。我喜欢使用 IRC,但出于某种原因,虽然我可以完美地阅读任何日语字符,但如果我输入一些东西,它会被当作垃圾发送给其他人。我使用的是此处的配置http://xkr47.outerspace.dyndns.org/howtos/irssi-utf-8-guide.txt

我得到了这些结果 /set charset

term_charset = utf-8
recode_out_default_charset = ISO-8859-15

/set recode

recode = ON
recode_autodetect_utf8 = ON
recode_fallback = ISO-8859-15
recode_out_default_charset = ISO-8859-15
recode_transliterate = ON

如果您有任何建议,请尝试想出一种不需要 root 权限的方法,因为管理员在服务器上实际执行某些操作将花费很长时间。我在网上查了很多关于语言环境的信息,但没有找到有关此问题的任何信息。

答案1

因此,正如评论中所确定的,Irssi 配置为在发送消息时将消息转换为 ISO-8859-15,而不是 UTF-8。

使用以下方法更改输出字符集:

/set recode_out_default_charset UTF-8

此外,如果您处于混合字符集通道中,/set recode_fallback Shift-JIS这可能会很有用(它会更改接收消息的解码)。Irssi 总是会首先尝试 UTF-8,但如果解码失败,它将接下来使用 recode_fallback。

相关内容