Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244585
  • 博文数量: 78
  • 博客积分: 2956
  • 博客等级: 少校
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-12 15:13
文章分类

全部博文(78)

文章存档

2012年(11)

2011年(27)

2008年(30)

2007年(10)

分类:

2008-03-19 09:09:51

虽然主流的几大 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

目前我没找到 对 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 的。 参看中的修改。

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 编码。

阅读(1104) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~