utf-8 のメールに含まれる外国語が DoGrepNo.05507
ヒラメ さん 19/08/22 15:10
 
charset=utf-8 のメールに対して検索して一覧作成をマクロから実行すると、検索文
字が日英以外の場合にヒットしません。

検証に使用したマクロは末尾に記載します。選択しているメールの件名を取得し、そ
の件名で検索して一覧作成するマクロです。何か使い方に間違いがありますでしょう
か。

秀丸メール Version 6.93 Beta 4 (32bit)
Windows 7 Professional, Version 6.1, Build 7601 (32bit)


loaddll "tkinfo.dll";
// 外国語メールでも文字化けしないようにおまじない
#n = dllfunc("SetJapaneseCodePageMode", 1);
// 検索パック復元予約
#n = dllfunc("AutoRestoreFindPack");
// 件名取得
$subject = dllfuncstr("CurrentHeader", "Subject");
$subject = dllfuncstr("YenEncode", $subject);
// 検索パック指定
#n = dllfunc("SetFindPack",
             "(\"" + $subject + "\", target=subject), "+
             "subfolder=0, inmail=2, hilight=1");
// 検索して一覧作成実行
#n = dllfunc("StartDoGrep2", "\\CurrentAccount",
             ",exclude=" + dllfuncstr("CurrentAccount") + "\\ゴミ箱", 0);
#n = dllfunc("SetJapaneseCodePageMode", 0);
freedll;
endmacro;

[ ]
RE:05507 utf-8 のメールに含まれる外国語No.05508
秀まるお2 さん 19/08/22 15:33
 
 毎度お手数かけてすみません。テストしたら再現しました。

 件名にユニコード文字、例えばcopyrightのU+00A9の文字があるとダメでした。

 ちなみに、ユニコード文字を「\uXXXX」のように表記するとうまくヒットするよう
で、例えば

#n = dllfunc("SetFindPack",
             "(\"\\u00A9\", target=subject), "+
             "subfolder=0, inmail=2, hilight=1");

 みたいなマクロだとうまくヒットするようでした。

 マクロをUTF-16で作った上で、上記の「\\u00A9」の所に実際のcopyright文字を入
れたマクロを作ってテストしたら、そっちもダメでした。

 SetFindPackの方でユニコード文字をうまく「\uXXXX」に変換してセットするか何
か対策すれば大丈夫だと思うので、その辺また修正させていただきます。またまた
少々お待ちください。

[ ]
RE:05508 utf-8 のメールに含まれる外国語No.05518
ヒラメ さん 19/08/23 18:43
 
β5でユニコード文字の検索でもヒットするようになりました。ありがとうございま
した。

ところが今度は、先に記載したマクロにより開かれた検索結果ウィンドウで、検索
(S) > 検索やり直し(R) とすると、以下のエラーメッセージが表示されることに気が
つきました。
「直前に選択していたフォルダが見つかりませんが、処理を続行します。」

β4のインストーラーが残っていたのでこちらでも試してみましたが同じでした。修
正可能でしょうか。。。

秀丸メール Version 6.93 Beta 5 (32bit)
Windows 7 Professional, Version 6.1, Build 7601 (32bit)

[ ]
RE:05518 utf-8 のメールに含まれる外国語No.05522
秀まるお2 さん 19/08/26 08:52
 
 「検索やりなおし」の中での検索条件(の中の、特に対象フォルダの情報)の復元
の処理がバグってました。今まではたまたま復元がうまくいってなくても誰も気づい
てなかったけど、今回のβ5でのマクロだと現象として表に出てきてしまいました。

 また修正させていただきます。

 ちなみに「検索やり直し」を実行してしまうとそのタイミングで検索条件(検索し
て一覧作成を実行した時に出てくる条件)が書き換わってしまうのですが、それは仕
方がないです。

[ ]
RE:05522 utf-8 のメールに含まれる外国語No.05543
ヒラメ さん 19/08/28 18:37
 
β6で「検索やり直し」時のエラーメッセージは表示されなくなりました。ご対応あ
りがとうございました。

このやり直しを実行してしまうと検索条件が書き換わるというのは仕様ということで
了解しました。手動で実行するのですからそれはそれで問題ないと思います。

[ ]