再议Trackback编码
首先感谢is (From scanner’s comment) 提出的宝贵意见:
赞一个先。
PHP Smarty现在好像频频露脸阿,有空一定好好研习一下。
TrackBack编码的问题,困难不在于编码转换,转换速度我觉得也没有太计较,毕竟Blog豆腐块撑死了也就一二十K, 不会很大的。我倒是觉得如何自动识别TrackBack target blog的编码类型,选择正确的编码方式。具体方法我也没有想好,一种是提供附加的PermaLink URL, 获得Blog编码方式,或者通过测试性的call TrackBack URL,来获得编码方式,觉得这个功能更有用了。
经他的这么一提醒,我才想起来原来Trackback是双向的,所以不但我发布Trackback Ping要提供转码,而且接受Trackback也要提供不同的Trackback URL以接受不同的编码Ping。很重要:)
MT的Trackback规范当时没有考虑到编码问题,这真是一个缺憾呀。目前我所知的弥补过程,一个是上面所说手工的选取编码;另一个就是is所期待的“自动识别”,确实可以做到,方法是:不提供Trackback地址,提供要Ping的Blog的PermanentLink地址,如果这个Blog符合Trackback规范的话,就应该能从这个页面AutoDiscovery得到Trackback地址:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://www.foo.com/archive.html#foo"
dc:identifier="http://www.foo.com/archive.html#foo"
dc:title="Foo Bar"
trackback:ping="http://www.foo.com/tb.cgi/5" />
</rdf:RDF>
判断一个页面的编码就要容易得多了(只通过Trackback地址没法判断编码…),复杂点来说有算法,印象中有一个开源C++的库,记不得名字了,专门用于编码识别,Mozilla就是使用这个库来判断页面编码的。简单的吗,可以通过简单的找规律的方式判断,虽然准确率另当别论,但应该不难。
这个方法的最大问题,很多Blog都没有按照Trackback规范要求的把那个AutoDiscovery放上(这主要要怪做Skin的人,包括我:P ),这样也就无济于事了。
如此看来,除非是Trackback更改规范,不然的话还就得靠手工选了… :(