4、在 rxvt-unicode terminal 中实时改变 locale 设置我所碰到的一个比较扰人的问题是,虽然现在日常的操作多数是在 UTF-8 的 locale 下进行的,但是很多时候我又需要一个基于 GB2312 的 rxvt- unicode 来跑原来的一些实验。简单的在一个现有的 rxvt-unicode session 下通过”export LC_CTYPE=zh_CN.GB2312″其实并不奏效。因为那只是告诉你的 bash 程序,此后的 locale 变成了 zh_CN.GB2312,而 rxvt-unicode 程序本身却依然工作在它启动时候的 zh_CN.UTF-8 的 locale 下。所以,即使改变了 bash 的 locale 设置,但如果在该 rxvt-unicode 中用 cat 或者 more 这样的命令来查看一个以 zh_CN.GB2312 的文件,依然看到是一堆乱码。
在这种情况下,一种不需要重新设置 X 系统的 locale,实时修改运行状态下的 rxvt-unicode 本身的 locale 设置的解决方案是使用 rxvt-unicode 内置的”escape sequence”来实现。
如下的 2 个命令组合,先更改 bash 的 locale 设置,然后通过”escape sequence”通知 rxvt-unicode 程序,现在这个 session 的 locale 设置已经被改成了 zh_CN.GB2312:
joseph@PeT43: ~ > export LC_CTYPE=zh_CN.gb2312; printf "\33]701;$LC_CTYPE\007"
这样,你就实时的得到一个 zh_CN.GB2312 的环境,可以对 zh_CN.GB2312 的文件进行正确的显式和操作了。
如果需要转回到 zh_CN.UTF-8 的模式,则可以通过如下的命令来实现:
joseph@PeT43: ~ > export LC_CTYPE=zh_CN.utf8; printf "\33]701;$LC_CTYPE\007"
当然,每次敲这么长的命令挺烦人的,我用的方法是把上面的这 2 个命令集合分别存成 .bash.gb 和 .bash.utf-8 两个文件,放到我的 home 目录。
如果我需要实时得到一个 GB2312 的 rxvt-unicode session,我就运行:
joseph@PeT43: somewhere > source ~/.bash.gb
如果我需要实时得到一个 UTF-8 的 rxvt-unicode session,我就运行:
joseph@PeT43: somewhere > source ~/.bash.utf-8
这样就省却了很多敲键盘或者 copy/paste 的时间。:)
这个方法是从
rxvt-unicode 的
FAQ 中学来的。这个”701″的 escape sequence 是 rxvt-unicode 对 xterm 的 escape sequence 的扩展,只在 rxvt-unicode 中有效。
[在 GNOME Terminal 里面可以通过菜单里面的”Terminal|Set Character Encoding”来实时更改 locale。]
5、VIM 配置文件的更新我是一个 VIMmer,以下是一些我在 UTF-8 环境下的 vim 的配置:
set encoding=utf-8 " set default encoding as UTF-8
set fileencodings=ucs-bom,utf-8,cp936,latin1 " fileconding detection order
set termencoding=utf-8 " support Chinese display in rxvt-unicode
6、Misc以下是一些小技巧,简单罗列在下面。
a. 在做编码转换的时候,如果你的源格式设定为 GB2312 的话,而且在转换成 UTF-8 的时候,发现程序会报“illegal input sequence at position xxxx”的错误。这是由于你之前的做的假定有问题。
GB2312 是国标里面一个最小也是最早的中文编码标准。其中,只涵盖了 6,763 个汉字。所以你需要转换的文件的原始的格式可能并不是 GB2312 编码。这个时候,你可以用 GB18030 做为源格式来进行转换。
GB18030 是最新的国家标准,包含了 27,564 个汉字,而且向下兼容 GB2312 和 GBK。
b.另外,支持 Unicode 且 Free 的中文字库我推荐使用”
文泉驿“。这好像也是目前为止,唯一的一个以支持 Unicode 为出发点的 Free 的中文字库。
7、一些有用的参考:a.
Markus Kuhn 的”
UTF-8 and Unicode FAQ for Unix/Linux“。最为详尽的 FAQ。
b.
Unicode Home Page。Unicode 的官方网站。
c.
A Quick Primer On Unicode and Software Internationalization Under Linux and UNIX。
Ed Trager 提供的一个关于如何在 Linux 下使用 Unicode 的 tutorial,涵盖了一些我没有提及的内容。推荐阅读。