作業場所
作業フォルダ(展開先、保存先、対象の場所)の指定、既存の事。
↓対象のパス ( 複数を 改行区切りで入力 )
展開先:
(↑まだ存在しない名前も可。指定なしなら作業場所)
保存名:
(↑存在しない新しいファイル名である事。指定なしも可)
ファイル名のエンコード:    
      (utf-16)          
タイプ:     (解凍)  
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 を表示