|
DecodeHeader関数ですが、BASE64やQuoted-Printableのデコードはするんですが、
文字コードの変換まではしないです。なので、「=?utf-8?b?....」のような文字列を
デコードすると、結果がutf-8のままになって、それで化けてしまうようです。
文字コードの変換(Shift-JISへの変換)も含めてデコードする関数は、今ちょっ
と探した限りは無さそうです。しいてやるとしたら、一回ファイルに保存して読み込
むような処理を、秀丸エディタ相当ウィンドウをダミーで作ってやるしか無いです。
試しにマクロ作ってみましたけども。ちゃんと動くかどうか怪しいです。
DecodeHeader関数に第2パラメータを追加して、そこに数値の1を指定したら、自
動的にShift-JIS文字コードに変換するってしようと思います。それでいいですよね。
次のβ版でそうしようと思います。
--------------------------------参考マクロ------------------
loaddll "tkinfo.dll";
#n = dllfunc( "SetJapaneseCodePageMode", 1 );
$s = dllfuncstr( "CurrentHeader", "Subject" );
$s2 = dllfuncstr( "DecodeHeader", $s );
$code = dllfuncstr("ToUpper", $s);
if( strstr( $code, "=?UTF-8?" ) >= 0 ) {
#handle = hidemaruhandle(0);
#n = dllfunc("NewMail");
#handle2 = hidemaruhandle(0);
#n = dllfunc("SwitchHeaderView", 0);
gofiletop;
beginsel;
gofileend;
delete;
insert $s2;
$filename = dllfuncstr("HomeDir") + "TempMail\\temp.txt";
saveas $filename, sjis;
gofiletop;
beginsel;
gofileend;
delete;
insertfile $filename, utf8;
gofileend;
$s2 = gettext( 0, 0, x, y );
setactivehidemaru #handle;
closehidemaruforced #handle2;
}
message $s2;
#n = dllfunc( "SetJapaneseCodePageMode", 0 );
freedll;
|
|