转载: http://blog.chinaunix.net/uid-10995039-id-166058.html
虽然主流的几大 Linux 发行版都开始逐渐将 UTF-8 作为默认字符集, 但以前在网上看到有人写过 All things in UTF-8 之类的文章, 一副慷慨赴死的样子, 让我不寒而栗。
然而, 虽然我一开始对 UTF-8 持抵制态度, 但时间长了还是忍不住要观望一下。 而且在 GBK 环境下, 基于 GTK2 的程序中保存的中文文件名老是乱码 —— 包括 Firefox, 于是忍无可忍后, 我终于还是换成了 UTF-8。
在 UTF-8 下也生活了将近一年了, 时至今日, 写篇文章总结一下由 GBK 到 UTF-8 迁移过程中的一些痛苦。
1 文件名
迁 移之前滇狐一直以为将所有文件名转换成为 UTF-8 是一件非常痛苦的事情, 正式开始迁移之后才发现, 问题一点都不严重。 滇狐平时一直养成了用英 文名作文件名的好习惯, 因此真正需要转换的文件名仅限于 mp3、电影和一些电子书等。 安装 convmv 这个好用的工具后, 切到这几个目录 下, 简单地运行一下:
convmv -r -f cp936 -t utf-8 --notest *
立刻就转换过来了。
2 lftp
FTP 是一个比较严重的问题: 目前国内绝大部分 ftp 都是 GBK 编码的。 所幸 lftp 的转码功能非常强, 因此在你的 ~/.lftprc 中加入以下内容即可:
set ftp:charset "GBK"
set file:charset "UTF-8"
3 FAT32 分区
许多人机器上都会有 FAT32 分区, 在把系统转换成 UTF-8 之后, mount FAT32 分区的时候也要进行相应转码, 在 -o 后原有参数后再加上如下选项:
mount /dev/yourdev /your/mount/point \
-o ...,codepage=936,iocharset=utf8,shortname=winnt
4 文本文件
文 本文件基本没有什么转换的必要, 因为滇狐平时编辑文件都使用 VIM, 而 VIM 始终可以正确地识别各种中文编码。 因此除非有什么特殊需要, 我 没有必要将以前的 GBK 编码的文件转换为 UTF-8 的。 如果必须转换的话, 用 VIM 打开文件后 :set fenc=utf- 8, 再 :wq 就可以了, 很省事。 如果需要批量转换的话, 还可以用 iconv。
5 Viki
目前我没找到 Viki 对 UTF-8 的支持, 或者我不会用。 所以用 Viki 时我还得临时把 VIM 保存文件的编码设置为 GBK, 代码如下:
" Viki
let g:vikiNameSuffix=".viki"
autocmd! BufRead,BufNewFile *.viki set filetype=viki | set fenc=cp936
然后, 在调用 VIM 进行语法加亮的时候, 也要进行相应地修改, 启动 VIM 的时候加上+"set fenc=cp936" 参数, 告诉 VIM 这个文件的编码是 GBK 的。 参看修正 VIM 语法加亮插件中的修改。
6 Python
之 前用 pickle 在文件里存放了一些对象, 当然, 对象里也包含了字符串。 切换到 UTF-8 之后, 由于解码失败, 那些对象无法读出来 了。 因此, 各位 Python 爱好者以后在存储对象的时候, 一定记得要使用 Unicode 字符串, 这样不容易出问题。
7 QTerm
很 荣幸能让 QTerm 在我这份简短的笔记里能有如此重要的地位。 该死的 QTerm 在保存配置文件和地址簿的时候没有使用 Unicode, 也没 有记录编码信息。 因此在切换到 UTF-8 环境下之后, 我们需要手工把~/.qterm/address.cfg 和 ~/.qterm /qterm.cfg 的编码转换一下, 转换方法参看前面的“文本文件转码”。
8 LaTeX
LaTeX 目前 CJK 已经支持 UTF-8, 在 LaTeX 中使用 UTF-8 的详细示例请参看这里。
9 MP3
目 前绝大部分 MP3 中的 tag 都不符合标准, 而 AmaroK 等播放器又坚决不支持非标准 tag, 因此我们需要一个转码程序把这 些 MP3 中的 tags 转换一下。 在 Debian 下安装 python-mutagen 包, 然后在 MP3 的目录下运行:
find . -iname "*.mp3" -execdir mid3iconv -e GBK {} \;
就可以将所有 tags 转换为 UTF-8 编码。
浙公网安备 33010602011771号