[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はコードの自動判別機能があるみたいですね。
--
喜瀬“冬猫”浩