LoginSignup
6
3

More than 5 years have passed since last update.

AutoHotKeyブロックコメントと文字エンコーディング

Posted at

AutoHotKey1.1(=AutoHotKey_L)前提。

AutoHotKeyのブロックコメント

AutoHotKeyのブロックコメントは/* */で表現できる。

ただし、コメントシンボルは必ず行頭に書かれている必要がある。つまり、ブロックコメント終了文字*/も、行末に書いてはならない。

/* ここもコメント
ブロックコメント
*/

; 行コメント

MsgBox, , Title, test ; 行の途中からコメントする場合、`;`の前に空白文字が必要

これが守られない場合――例えば、終了シンボル*/が行末にある場合などは、スクリプトはエラーを出さずに終了する模様。

スクリプトファイルの文字エンコーディング

ここから本題。

ブロックコメントに日本語(マルチバイト文字)が含まれる場合、文字エンコーディングによっては改行が正しく解釈されず、上記のブロックコメントがらみの異常終了を引き起こす可能性がある模様。

例えば、以下の極めて単純なスクリプトをUTF-8(BOMなし)で保存し、実行した場合、メッセージボックスが表示されない。

/*
日本語コメント。この部分は処理に影響しないが、スクリプトファイルの文字エンコーディングによっては問題を引き起こす。
*/
MsgBox, , Title, Test

ファイルをUTF-8(BOMあり)で保存し直した場合、問題なく表示される。

AutoHotKey1.1(AHKL)を利用する場合、原則として、スクリプトファイルはUTF-8(BOMあり)で保存することが望ましい。

スクリプトを全てUTF-8に変換する。コマンド等は日本語を含むことはないのでほぼ問題は無い。
メモ帳などのテキストエディタで開いてエンコードを指定して保存すればよい。
BOMの有り無しを指定できるテキストエディタの場合、エンコードが明示的なBOM付を選択するのが望ましい。

特に、ブロックコメントを含むスクリプトが正常に動かない場合、文字エンコーディングを変更することで解消する可能性がある。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3