KURODA Hiraku
hirak****@hinet*****
2005年 11月 7日 (月) 16:29:01 JST
ある種の環境でトラックバックを受けられない場合があることが分かったので報 告します。 トラックバックを受けるHiki側の環境 *UTF8からEUCへの変換にuconvを使う (Rubyのバージョンが古い、nkfのバージョンが古い、など) トラックバックを送る側の環境 *tDiary(トラックバックをEUCで送る) この場合だと、以下の流れによってトラックバックが受けられなくなりました。 1.tDiatyがEUCでトラックバックを送る 2.Hikiが受け取ったトラックバックをEUCに変換しようとする === misc/plugin/trackback.rb === excerpt = utf8_to_euc( params['excerpt'][0] || '' ) ====== 3.utf8_to_eucでuconvにEUC文字列を渡す === hiki/util.rb === return Uconv.u8toeuc(str) ====== 4.uconvで、UTF8のつもりで受け取った文字列がEUCであるため、例外を投げてくる 上に挙げた環境でなければトラックバックを受け取ることが出来ています。 これは、nkfを使ってEUCへの変換を行う際に === hiki/util.rb === return NKF::nkf('-m0 -e', str) ====== "-W"オプション(入力をUTF8と仮定する)を指定していないため、EUC文字列でも 問題なく受け入れて処理を進めるからでしょう。 たぶん、トラックバックを受け取る際に送られてきたトラックバックの文字コー ドを読み取って対応させればよいのだと思うのですが、ちょっと忙しくてそこま でするパッチは作れていません。 とりあえず、utf8_to_eucを使う部分でrescueするようなパッチを作ってみまし た(でもこのパッチ、「UTF8でなければEUC」って決め打ちしてるんですよね)。 -- -------------------------------------------------- 黒田 拓(くろだ ひらく) hirak****@hinet***** http://www.hinet.mydns.jp/~hiraku/ -------------------------------------------------- -------------- next part -------------- 文字コード指定の無い添付文書を保管しました... 名前: patch.txt ダウンロード