« Trac0.10と日本語 | Main | Trac0.10と日本語wikiページ名 »

2006.11.05

Trac0.10&BackLinks

 Trac0.10の環境でBackLinksマクロが上手く動かない件ですが・・・関連しそうな資料を見つけました。

StringIO -- ファイルのように文字列を読み書きする

StringIO オブジェクトはユニコードも 8-bit の文字列も受け付けますが、この2つを混ぜることには少し注意が必要です。この2つが一緒に使われると、 getvalue() が呼ばれたときに、 (8th ビットを使っている)7-bit ASCII に解釈できない 8-bit の文字列は、 UnicodeError を引き起こします。

 ただ、実際にはgetvalue()以前のところでエラーが出ているようなので、こうなったらTry&Errorってことで、文字コードの変換処理などをいろいろと試してみたところ、とりあえず、結果的に以下の修正で日本語ページ名の場合でも問題なく処理できるようになりました。


  • マクロファイルの先頭に# -*- coding: UTF-8 -*-を追加し、ファイルのエンコーディングを明示的に指定。
  • 自分自身のページを除外するif文(33行目)において、DB取得結果の文字コードをutf-8に変換するように。if row[0].encode('utf-8') != thispage:
  • リンク元ページ名をセットする処理(35行目)も同様にutf-8に変換。buf.write(row[0])

(元ソースは、MacroBazaarで公開されているBackLinks.3.pyです)

 もっとも、これが効率のいい処理なのかどうかは不明ですし、こういう回避が正しいのかどうかも不明ですが(^^;

|

« Trac0.10と日本語 | Main | Trac0.10と日本語wikiページ名 »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/12559983

Listed below are links to weblogs that reference Trac0.10&BackLinks:

« Trac0.10と日本語 | Main | Trac0.10と日本語wikiページ名 »