検索マクロでの日本語検索にてNo.49789
tacoume さん 16/05/07 08:04
 
いつも秀丸メール便利に使わせていただいています。
どうもありがとうございます。

以前からなのですが、自分で作った検索関係のマクロで検索文字に日本語を指定した
ときに正しく動作しないことがあります。

[ 検索マクロ ]

input 関数で、検索文字を受け取り、それを DoGrep で検索する。
下記のようなものです。

---------------------------------------------------------------------
#days = 60;
$Acc = dllfuncstr("CurrentAccount");
$Fld = dllfuncstr("CurrentFolder");

$search_text = input("簡易ヘッダ + 本文", "");
$search_text = dllfuncstr("YenEncode", $search_text);

$text_for_SetFindPack = "(\"" + $search_text + "\", fuzzy, noregular, nocase
sense, noreturn, target=smallheaderbody), flag=date=" + str(#days) + "日前-
指定なし, subfolder=1, inmail=0";

#n = dllfunc("SetFindPack", $text_for_SetFindPack);
#n = dllfunc("PushFindPack");
#n = dllfunc("DoGrep", $Acc, $Fld, 0);
---------------------------------------------------------------------

[ 動作 ]

ここで input ウィンドウで日本語「テスト」等を指定すると、うまく動作するとき
とそうでないときがあります。動作しないときは DoGrep で開かれるウィンドウのタ
イトルが

検索結果 - ("\u30C6\u30B9\u30C8", fuzzy, noregular, ... )

のようになっており、「テスト」がユニコードで表示されているように思います。

正しく動作しないときの条件がこれまでわからなかったのですが、いろいろ試したと
ころ秀丸メールの本体ウィンドウで選択表示されているメールに依存するように思え
てきました。

こちらで見た感じでは、

charset=iso-8859-1 (original="utf-8")

のメールが本体ウィンドウで選択表示されている時に正しく動作しません。ただ、他
に異なるヘッダもあるので、これが本当に現象が出る出ないの条件かどうかまで厳密
に絞り込めているわけではないです。

もし、何かわかることあるいはアドバイス等があれば教えていただければと思います。

よろしくお願い致します。

[ ]
RE:49789 検索マクロでの日本語検索にてNo.49790
秀まるお2 さん 16/05/07 09:45
 
 外国語メールを選択した状態でマクロ実行すると化けてしまう問題ですが、
マクロの先頭に、

    loaddll "tkinfo.dll";
    #n = dllfunc( "SetJapaneseCodePageMode", 1 );

 って2行を入れれば直ると思います。

 外国語メールを選択した状態でマクロ実行すると、そのマクロが外国語の文字
コードを前提とした形で実行されてしまいまして、結果、"テスト"のような文字
列が、現在選択してる外国語前提に変換されてしまったりします。

 現状では、マクロの先頭で上記のような処理を入れてもらうしか無いです。や
やこしくてすみませんがマクロの改造ということで対応お願いします。


[ ]
RE:49790 検索マクロでの日本語検索にてNo.49792
tacoume さん 16/05/07 15:11
 
早速の回答ありがとうございます。

無事に動作しました。

助かりました。

[ ]