« 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


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

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