Unicodeファイル名 その2

Unicodeファイル名の出力がバグってたので修正しました。
差分


動作確認用にUnicode版の簡易アーカイバも作りました。
wlha.cpp
LHMeltで確認した限り、うまくいっているようです。


とりあえずWindowsでは動いてますが、それ以外では問題ありです。
Windows版で使っているWideCharToMultiByte()は変換できない文字を既定で「?」に置換してくれるのですが、それ以外で使っているstd::wcstombs()は変換できない文字があると全体の変換が失敗になるからです。
std::wcrtomb()で一文字ずつ変換すればよいのですが、LHAの仕様上コードページを指定した変換も必要になるので、iconv()を使うことを考えてみました。


いくつかの環境で「iconv -l」を確認したところ、おおよそ「CP932」のような名前でWindowsのコードページに対応した文字セットが利用できることが分かりました。
他にも「WINDOWS-〜」とか「MSCP〜」とかもありますが、「CP〜」の数が一番多いのでこれを使うことにします。