ファイル名のエンコード:
タイプ:
(解凍)
EXE:
エラー。 "run_W_LZH_ZIP.hta" から、HTA として実行の事。
ボタン [展開する] か [圧縮する] を押して実行。
ZIP か、LZH かは、ボタンの横のチェックで指定。
展開(解凍)時は、拡張子にチェックあれば、ZIP, LZH のチェックに関わらず、
ファイルの拡張子によって決める。
横の Select (プルダウンメニュー)は、実行(.exe)ファイルの選択。
2008 は、Visual C++ 2008 でコンパイルしたもの。
2015 は、2015 でコンパイル。
レポート は、チェックで、実行時のファイル名のエンコードをどうしたかの
詳細をファイルに出力する。
確認 は、チェックで、受け取った引数を表示し、実行するかのダイアログを出す。
パスの複数入力欄は、改行区切り、一行に一つのパスを。
圧縮(保存)時は、対象のファイル・フォルダ群を、
展開(解凍)時は、.zip, .lzh の圧縮ファイルを、入力する。
空白含むなら引用符の囲みは、こちらで付け足すので、不要。
(但し行中に引用符含むなら、引用符を付ける事はしない。)
.lnk(ショートカットファイル)は、EXE側で、リンク先に置き換える。
/ か、- から始まるパスは、EXE側で、オプション(スイッチ)と解釈するので使えない。
展開先: 入力欄は、解凍先フォルダの指定。
名前のみなら、作業場所の中での指定になる。存在しないフォルダなら作成する。
空(指定無し)なら、作業場所に展開するので、注意。
保存名: 入力欄は、作成する圧縮ファイル名の指定。
既に存在する名前は、受け付けない。
ファイル名のエンコード:
圧縮ファイル中に収める時の、ファイル,フォルダ名のエンコードの種類,方法を選択。
CodePage: チェックと、記入欄。
コードページ(数字)を、記入欄へ入力。 チェック付けても欄が空なら無効。
例、 932: SJIS(日本語)、 20932: EUC-JP、 50220, 50222: iso-2022-jp、
65001: UTF-8、 1252: Latin-1、 0: デフォルト、
( 1200: UTF-16 LE, 1201: 〃BE などは無効の様。)
横の lzh チェックは、LZH の圧縮時、コードページを指定なら、
このチェックあれば、コードページの情報をヘッダに書き入れる。
Locale: チェックと、記入欄。
ロケールの文字列を指定。 チェック付けても欄が空なら無効。
例、 jpn Japanese .932 などは日本語(SJIS)。 .20932 は EUC エンコード。
( コードページはその前に . ドットを付ける。が、Unicode のそれは無効?。)
.ACP (ドット付)で、デフォルトのロケール。
横の t チェックは、ロケールを指定する関数を使用する。
チェック無しなら、setlocal 関数で、ロケールを設定する。
UTF-8, UTF-16 チェック
上とは別に、直接に文字列を変換する。
BOM チェック、先頭にバイトオーダーマークを付ける。
BigEndian チェック、UTF-16 のバイトの並び順。チェックなければ、little endian.
codecvt チェック、コンパイル時に使用するようにした場合のみ有効。
有効で、チェックありなら、C++11 を使って、UTF-8,16 の変換を行う。
チェックなしか無効の場合は、自前で変換する。(2008 では使えない)
LZH Unicode チェック
LZH で圧縮する場合に、Ascii 以外の文字を含む名前は、Unicode用のヘッダに入れる。
(これにチェックしていても、ZIP には関係なく、無指定と同じ)。
更に、CodePage: の所の lzh チェックが入っているなら、同時に、
通常の名前ヘッダのコードページの情報もヘッダに書き入れ、
CodePage: の所の値で、通常の名前ヘッダへ、エンコードする。
無指定 チェック
特にエンコードを指定しない(他に付いているチェックを外す)。
ただ、CodePage, Locale にチェックが付いていても、その入力欄が空なら、
また ZIP の時に LZH Unicode チェックも、無指定と同じである。
( これらはエンコードの選択ではあるが、CodePage, Locale, その他の選択の違いは、
文字列の変換で使用する-呼び出す関数が異なるという事でもある。)
圧縮時、無指定の場合、エンコードは、
ZIP では、Ascii 以上の文字を含むなら、UTF-8 にした。( SJISにしない。)
( デフォルトのエンコードにするには、コードページに 0 を指定。)
LZH では、Unicode で、それ用のヘッダに入れるとともに、普通の名前ヘッダには、
デフォルトのエンコード( 日本語Windowsでは、SJIS )で入れて、
そのコードページも、ヘッダに入れるようにした。
展開(解凍)時に、圧縮時のそれと異なるエンコードを選ぶと、
ファイル名が文字化けすることになる。
圧縮ファイル内部で、指示( ZIP の UTF-8、LZH の Unicode か Codepage )が
ある場合は、指定に関わらず、その内部の指示に従ってデコードする。
( LZH で Unicode, Codepage が両方ある時は、Unicode とする。)
展開時、無指定で、内部指示もないなら、デフォルトのエンコード( コードページ
0 ) として、デコードする。
ZIP で、UTF-8 にした場合( CodePage: 65001 も含めて)、仕様に従って、
ヘッダに標しを入れるので、多分、正しい ZIP ファイルになる。
Windows( 8 以上?)のエクスプローラなら開く事が出来るものになる筈。
LZH での多言語対応は、ファイル名を Unicode 用のヘッダ(拡張0x44,0x45)に入れるか、
通常のヘッダに入れて、そのエンコード情報を、コードページヘッダ(0x46)に
記録するようである。
LZH Unicode チェックと、CodePage欄横の lzh チェックは、これである。
( 正しく出来ているかは、よく分からないのだが。)
▽ EXE の ReadMe を表示