Unicodeファイル名対応考察

今日からHamigaki.Archiversのwpath対応に移ります。
まずはUnicodeに対応しているのが分かっているLHAから考えます。
UNLHA32.DLLのドキュメントを読む限り、Unicodeファイル名を出力する方法は次の3つのようです。

  • マルチバイト文字列で表現できない場合のみ、Unicodeファイル/ディレクトリ名ヘッダを使う(既定の動作)
  • 全てUnicodeファイル/ディレクトリ名ヘッダを使う
  • コードページヘッダでUTF-8を指定して、通常のファイル/ディレクトリ名ヘッダを使う

最後の方式は現状のインタフェースのままでも利用可能です。
となると、Hamigaki.Archiversではこうなるでしょう。

lha_file_source
Unicodeファイル名はそのまま、Unicodeファイル名はマルチバイト文字列に変換して読み込む
lha_file_sink
Unicodeファイル名をそのまま書き出す
lha_wfile_source
Unicodeファイル名はそのまま、非Unicodeファイル名はUnicodeに変換して読み込む
lha_wfile_sink
全てUnicodeのまま書き出すか、可能な限りマルチバイト文字列に変換して書き出す

lha_wfile_sinkの書き出し方式の切り替えは、コードページが指定されているかどうかで可能だと思います。


#lha_wfile_sourceとすべきか、wlha_file_sourceとすべきか、、、