[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:16600] migemo が UTF-8 環境で正しく動かない



新規でetchを入れた状態で、w3m上でmigemoが正しく動かないことに気が
つきました。すでにBTSにも登録されています。また、メンテナの鵜飼さんの
日記にくわしい状況があります。

$ dpkg -l migemo |egrep ^i
ii  migemo         0.40-7.1       Japanese incremental search with Romaji on Emacsen

http://bugs.debian.org/336554
http://ukai.org/d/index.cgi?2004-03-23

コマンドラインからmigemoを実行してみるとわかりますが、環境変数に
よらず、返り値がEUC-JPになっているのが問題のようです。w3mでは、
オプションの「システムの文字コード」をEUC-JPにすればよいのですが、
僕の環境のせいか、その設定を覚えてくれません。

イライラしてきたので、強引に出力をUTF-8にしてみました。
Rubyはよくわからないので、むりやりです。
================================================================
--- migemo.orig	2006-12-28 06:28:15.000000000 +0900
+++ migemo	2007-01-17 22:11:02.000000000 +0900
@@ -15,6 +15,7 @@
 require 'migemo'
 require 'getoptlong'
 require 'thread'
+require 'nkf'
 
 class Logger
   def initialize (filename)
@@ -155,7 +156,7 @@
       regex_str = [regex_str1, regex_str2].join(bar)
     end
 
-    puts regex_str
+    puts NKF.nkf('-Ew', regex_str)
     puts options['separator'] if options['separator']
     logger.puts(pattern) if logger
   end
================================================================

$ echo ai |migemo -t egrep /usr/share/migemo/migemo-dict |nkf -g
UTF-8

これで、LANG=UTF-8したw3m上で、migemoが普通に動きます。
もちろん、これだと今度はEUC-JPな環境では動かないわけです。

そこで、環境変数をみて、EUC-JP以外の日本語文字コードなら変換して
出力するようにしたいのです。最低でもEUC-JPとUTF-8だけ理解すれば
よいのかな。

アドバイスいただけないでしょうか。Rubyのメーリングリストで
きいたほうがよい?

ちなみに、C/Migemoはコードの自動判別機能があるみたいですね。
-- 
喜瀬“冬猫”浩