Planet 的一个 patch

Planet 是一个比较常用的 feed 聚合器,GNOME、Debian、Perl 等社群都使用这个收集他们相关的新闻,采用的是 Mark Pilgrim 的 Universal Feed Parser (现在这个 feed parser 已经不由 mark 维护,而是放在 sourceforge.net 由几个人共同维护),原来的设置里没法正常处理中文,前几天试用这个东西的时候,顺手做了点修改。这里是 diff 文件,应用在 planetlib.py 上 (我的修改根据的是前几天的一个 nightly 版本)。

但请注意,这仅仅是一个面向简体中文用户的修改,如果你希望支持其他的编码 (比如 ISO-8859-1、Big-5 等),可以参考我的改动变化一下,并不复杂。

因为面对的仅仅是简体中文用户,所以只需要保证不同的来源编码 (gb2312、gbk、gb18030 和 utf-8) 都能够正确转换成目标编码 utf-8 即可。现在使用的策略是这样的,不根据 `xml encoding=` 中的内容来判断编码,首先尝试以 gbk (即 cp936) 解码,不行则用 gb18030 解码,再不行则直接返回 (认为此时是 utf-8)。

这种策略是考虑到简体中文的 blog 一般只有可能使用上述三种编码。(本来没用 gb18030,但在测试的时候遇到一个 blog 的 RSS 有个地方 gb2312 无法解析,换用 gb18030 就 OK 了,说明 `xml encoding` 有的时候也是骗人的…)

说到 Planet,类似的程序还有一个基于 WordPress 和 Magpie Feed parser 的插件,feedwordpress,试用了一下没发现什么问题,能够根据源编码自动判断并转换成 utf-8。但要小心不能正常处理 UTF-8 的 MySQL 服务器。

好吧……我承认就在我自己的机器上遇到了这个问题,从插件怀疑到 wordpress,再怀疑到 php,最后终于发现原来是 MySQL 这小子坏事,网上好像也见到类似的情况。

Author: Jiang Jiang

A software engineer from China, working on some OS for a fruit company. Interested in typography and science fiction.

3 thoughts on “Planet 的一个 patch”

Leave a Reply

Your email address will not be published. Required fields are marked *