SetJapaneseCodePageMode関数(TKInfo.dll)(Ver7.33対応版)
秀丸メールのVersion 7.20β2から、マクロ内部は常に日本語Shift-JIS、コードページ932固定相当で動作するように大きく仕様変更をしました。なので、SetJapaneseCodePageMode関数は呼ばなくても、マクロの文字列変数が化けたりすることは無くなりました。一応互換性維持のためにこの関数は残してあります。
CurrentHeader関数などのtkinfo.dllの関数も、外国語メール上で実行しても、常に日本語コードページ932に変換された文字列を返するように仕様変更しています。
SetJapaneseCodePageMode関数は、秀丸メール本体ウィンドウ上のメール内容を表示してる秀丸エディタ相当部分を、日本語を表示する用のコードページに固定するモードにします。この状態にすると、例えば外国語のメールを表示する時も、あくまで秀丸エディタ相当部分は「エンコード種類=日本語Shift-JIS、コードページ=932固定」であるかのごとく動作するようになります。
tkinfo.dllの各種関数は、メールのコードページで文字列を返す物(CurrentHeader等)と、日本語コードページで文字列を返す物(CurrentAccount等)がごちゃまぜになってて、例えば外国語メールを表示したままCurrentAccount関数で文字列を取得すると、それが結果的に化けたような扱いになることが多いです。なので、外国語メールを扱うマクロは、なるべくこのSetJapaneseCodePageModeを使って日本語コードページ固定にしてマクロが動作するようにするのがお勧めです。
- パラメータ1(数値型)
-
数値の1を指定すると、「JapaneseCodePageMode」になり、0を指定すると、元の普通の状態に戻ります。
一般的には、マクロの先頭でパラメータに1を指定して呼び出し、マクロの最後でパラメータに0を指定して呼び出すのが適当です。
- 返り値(数値型)
-
返り値には特に意味はありません。
- 注意
-
外国語メールを表示してる最中にこの関数を呼び出して日本語モードに切り替えると、現在表示してるメールを日本語コードページ(&日本語用フォント)で表示しなおす動作が働きます。その時、カーソル位置や範囲選択の状態はキープされますが、日本語用のフォントに切り替わる関係で、折り返し桁数が変わったり表示上の位置が多少変化することがあります。
例 |
loaddll "tkinfo.dll";
#n = dllfunc( "SetJapaneseCodePageMode", 1 );
$s = dllfuncstr("CurrentHeader","Subject");
message $s; // 外国語メールでも文字化けしない
$s = dllfuncstr("CurrentAccount");
message $s; // 外国語メールでも文字化けしない
#n = dllfunc( "SetJapaneseCodePageMode", 0 );
|
- 備考
-
SetJapaneseCodePageModeを使ったマクロは、秀丸メールのVersion 7.19以下では普通のShift-JIS形式のファイルとして保存してもらわないとダメで、ユニコード(UTF-16)で保存したら逆に文字化けするケースがあると、ここのヘルプに記載していました。しかし、いろいろテストしても化けるケースは確認できませんでした。なので、UTF-16(またはVersion 7.20からはUTF-8も含む)で保存しても問題ないです。むしろそうしていただいた方が間違いが無いです。
SetJapaneseCodePageModeで日本語Shift-JIS固定モードにしても、外国語メールの中に日本語を書き込むことは出来ません。なので、例えばBeginEditMail/SaveEditMailでメールを書き換える場合に、メールに日本語を書き込もうとしても、うまくいきません。
SetJapaneseCodePageModeが効くのは秀丸メール本体ウィンドウ上だけで、エディタ・ウィンドウ上には効きません。