[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: UTF-8 のプロセス呼び出しで文字化け



森下です。

From: Mimpei MORISHITA <mimpei@xxxxxxxxx>
Subject: Re: UTF-8 のプロセス呼び出しで文字化け
Date: Fri, 27 Jan 2006 22:54:22 +0900 (JST)
Message-ID: <20060127.225422.186973548.mimpei@xxxxxxxxx>

> > http://www.ietf.org/rfc/rfc2254.txt
> > http://www.cysol.co.jp/ldap/2254/rfc2254JP.html
> > の 5章の最後で正解だったようですな。へへへ。
> 
> を見て、
> 
> (defun mew-ldap-encode-utf8 (string)
>   (mapconcat (lambda (x)
>                (if (and (<= ?! x)
>                         (>= ?~ x)
>                         (null (= ?\\ x))
>                         (null (= ?* x)))
>                    (list x)
>                  (format "\\%02x" x)))
>              (encode-coding-string string 'utf-8)
>              ""))
> 
> というフィルタを mew-ldap-make-filter から呼ぶようにして試してみたんで
> すが、
> OK: 「森下」 -> (cn=\e6\a3\ae\e4\b8\8b*)
> NG: 「森下_」-> (cn=\e6\a3\ae\e4\b8\8b_*)
> という結果になってしまいます(サーバーでは、cn に「森下_民平」と入って
> います)。かといって、先のメールで書いたように、ASCII 部分も含めてエン
> コードしてしまっても引けないんですよね。
> うーん、なんでだろう、、、

LDAP サーバーの cn フィールドに 「森下_民平」と入っている、というのは
私の勘違いでした。
実際には、mew-ldap.el が、姓と名の間の空白を _ に変換してくれているの
でした。

姓名の間の空白は、16 進数にエンコードしてもしなくても、ldapsearch の結
果は返ってくる(` *mew-ldap-output*' バッファに出力されている)、という
のは確認できました。
OK: 「森下 」 -> (cn=\e6\a3\ae\e4\b8\8b *)
OK: 「森下 」 -> (cn=\e6\a3\ae\e4\b8\8b\20*)

mew-ldap のインタフェースとしては、_ を入力されたら空白に置き換えて検
索する、とすれば良いのかな、と思っているところです。

現在のところ、単純に _ を空白に変換して検索すると、` *mew-ldap-output*'
バッファに出力されているにも関わらずその結果が捨てられてしまい、
No matching alias となってしまいますが、_ を空白に変換したことの整合性
をちゃんと取ってやれば、LDAP の日本語検索については解決しそうな感じで
す。

ということで、時間のあるときにぼちぼち試してみようと思います。
コメントくださった皆様、ありがとうございました。

--
もりした みんぺい