虽然主流的几大 Linux 发行版都开始逐渐将 UTF-8 作为默认字符集,但以前在网上看到有人写过 All things in UTF-8 之类的文章,一副慷慨赴死的样子,让我不寒而栗。
然而,虽然我一开始对 UTF-8 持抵制态度,但时间长了还是忍不住要观望一下。而且在 GBK 环境下,基于 GTK2 的程序中保存的中文文件名老是乱码——包括 Firefox,于是忍无可忍后,我终于还是换成了 UTF-8。
在 UTF-8 下也生活了将近三年了,时至今日,写篇文章总结一下由 GBK 到 UTF-8 迁移过程中的一些痛苦。
迁移之前滇狐一直以为将所有文件名转换成为 UTF-8 是一件非常痛苦的事情,正式开始迁移之后才发现,问题一点都不严重。滇狐平时一直养成了用英文名作文件名的好习惯,因此真正需要转换的文件名仅限于 mp3、电影和一些电子书等。安装 convmv 这个好用的工具后,切到这几个目录下,简单地运行一下:
立刻就转换过来了。
FTP 是一个比较严重的问题:目前国内绝大部分 ftp 都是
GBK 编码的。所幸 lftp 的转码功能非常强,因此在你的
~/.lftprc
中加入以下内容即可:
许多人机器上都会有 FAT32 分区,在把系统转换成 UTF-8
之后,mount FAT32 分区的时候也要进行相应转码,在
-o
后原有参数后再加上如下选项:
文本文件基本没有什么转换的必要,因为滇狐平时编辑文件都使用
VIM,而 VIM
始终可以正确地识别各种中文编码。因此除非有什么特殊需要,我没有必要将以前的
GBK 编码的文件转换为 UTF-8 的。如果必须转换的话,用
VIM 打开文件后 :set fenc=utf-8
,再
:wq
就可以了,很省事。如果需要批量转换的话,还可以用
iconv。
首先,我们使用一个简单的脚本把所有的 .viki 文件转成 UTF-8 编码的:
然后,在编译 .viki 文件的时候,加上“-m utf8”参数,告诉 deplate 该文件已经是 UTF-8 编码就可以了。
之前用 pickle 在文件里存放了一些对象,当然,对象里也包含了字符串。切换到 UTF-8 之后,由于解码失败,那些对象无法读出来了。因此,各位 Python 爱好者以后在存储对象的时候,一定记得要使用 Unicode 字符串,这样不容易出问题。
很荣幸能让 QTerm
在我这份简短的笔记里能有如此重要的地位。该死的
QTerm 在保存配置文件和地址簿的时候没有使用
Unicode,也没有记录编码信息。因此在切换到 UTF-8
环境下之后,我们需要手工把
~/.qterm/address.cfg
和~/.qterm/qterm.cfg
的编码转换一下,转换方法参看前面的“文本文件转码”。
LaTeX 目前 CJK 已经支持 UTF-8,在 LaTeX 中使用 UTF-8 的详细示例请参看这里。
目前绝大部分 MP3 中的 tag 都不符合标准,而 Amarok
等播放器又坚决不支持非标准
tag,因此我们需要一个转码程序把这些 MP3 中的 tags
转换一下。在 Debian 下安装 python-mutagen
包,然后在 MP3 的目录下运行:
就可以将所有 tags 转换为 UTF-8 编码。