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とすべきか、、、