サポート掲示板
HOME  □ MANUAL  □ 新着記事  □ 新規投稿
ツリー表示  □ 記事全文表示  □ SEARCH  □ 過去ログ
ツリー表示

MESSAGE 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない /SAKASE (06/05/25(Thu) 13:37) [845]
....MESSAGE Re[1]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない /Akky (06/05/25(Thu) 16:41) [846]
........MESSAGE Re[2]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない /SAKASE (06/05/25(Thu) 18:36) [847]
............MESSAGE Re[3]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない /Akky (06/05/26(Fri) 19:21) [848]
................MESSAGE Re[4]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない /SAKASE (06/05/27(Sat) 15:34) [849]
....................MESSAGE Re[5]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない /Akky (06/05/27(Sat) 23:51) [850]
........................MESSAGE Re[6]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない /Akky (06/05/27(Sat) 23:55) [851]
............................MESSAGE Re[7]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない /SAKASE (06/05/28(Sun) 17:51) [852] 解決済み!


親記事 / ▼[ 846 ]
NO.845  7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない
□投稿者/ SAKASE -(2006/05/25(Thu) 13:37:57)
□U R L/
【ソフト名】
 7-Zip32.dll
【バージョン】
4.31.03
【使用OS】
Windows2K
【PC機種】
IBM ThinkPad G41
【質問内容】

はじめまして。
7-Zip32.dllをUnicodeモードにて使用したいのですが、SevenZip()関数のコマンドに@を使用してファイルリストを指定すると、正しく圧縮を行なってくれないようです。

私の方では、以下のようにして確認しています。
※圧縮ターゲットファイル(History.txt)は、D:\Tempフォルダに格納済み。

---Sampleソース--------------------------------
//ファイルリストに圧縮するファイル名をUnicode出力で書き込む
FILE *fp = _wfopen(L"D:\\temp\\respons.txt", L"wb");
fwprintf(fp, L"%s", L"History.txt");
fclose(fp);

//Unicodeモードセット
SevenZipSetUnicodeMode( TRUE );
SevenZip(NULL ,"a -t7z \"D:\\temp\\aaaa.7z\" \"D:\\temp\\\" @\"D:\\temp\\respons.txt\"", NULL, 0 );
----------------------------------------------

※_wfopenの第2引数を L"wb" としているのは、圧縮するファイル名にUnicodeを使用しているものがあり、それも圧縮対照としてファイルリストに記述したかったので、このようにしています。

ファイルリストを L"wt" で開いて作成すれば、圧縮してくれますが、Unicodeの含まれたファイル名がファイルリストに書き出されないため、L"wb" の設定でなければならないのだろうな?と思っています。

以上、解決方法をご教示ください。
よろしくお願いします。






▲[ 845 ] / ▼[ 847 ]
NO.846  Re[1]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない
□投稿者/ Akky -(2006/05/25(Thu) 16:41:54)
□U R L/ http://akky.cjb.net/
何も確認していませんがとりあえず、、、
Unicodeとは全てUTF-8の事ですが間違っていないでしょうか。



▲[ 846 ] / ▼[ 848 ]
NO.847  Re[2]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない
□投稿者/ SAKASE -(2006/05/25(Thu) 18:36:49)
□U R L/
Akkyさん、こんにちは。

>Unicodeとは全てUTF-8の事ですが間違っていないでしょうか。

プログラムは、VisualStudio6で作成していて、プリプロセッサの定義で”UNICODE”とか”_UNICODE”を定義してワイド文字にて処理をコーディングしています。

ネットで調べてみましたが、VCで使われるワイド文字はUTF-8だそうなので、私が、ファイルリストに出力しているデータもUTF-8ではないかと思っています。
もし、必要であれば、私の方で出力したファイルリストをサポートメールアドレスに送付してもかまいません。

以上、よろしくお願いします。




▲[ 847 ] / ▼[ 849 ]
NO.848  Re[3]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない
□投稿者/ Akky -(2006/05/26(Fri) 19:21:00)
□U R L/ http://akky.cjb.net/
いや、VCは普通変換しない限りUTF-8にはなりません。多分VBもそうでしょう。
日本なら通常はSJISが使われています。
ファイルリストをメモ帳で開いてみて名前を付けて保存を選んだ時に
使用されている文字コードが表示されます。
それで判別してください。
でも変換してないと言う事はSJISでしょうね。
UTF-8でファイル名を指定してやってください。



▲[ 848 ] / ▼[ 850 ]
NO.849  Re[4]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない
□投稿者/ SAKASE -(2006/05/27(Sat) 15:34:19)
□U R L/
こんにちは、SAKASEです。

> ファイルリストをメモ帳で開いてみて名前を付けて保存を選んだ時に
> 使用されている文字コードが表示されます。

確かにUTF-8ではなかったです。ANSIが選択されてました。

> UTF-8でファイル名を指定してやってください。

ファイル名をUTF-8に変換して出力するように修正した結果、圧縮されるようになりました。
しかし、半角(?)の”→”(Unicode:0xffeb)を使ったファイル名のファイル(”→→→bb.txt”)と全角文字を使用したファイルについては上手く圧縮されませんでした。
ちなみに、作成されたファイルリストをメモ帳で見てみると、”→”を使ったファイル名も全角ファイル名もファイルリストに登録されていて、ファイル種別もUTF-8になっているみたいです。

ヒストリファイルの中身は以下のとおりです。
-------------------------------------
"→→→bb.txt" <==Unicodeの半角→です。
"全角文字.xls"
"WMI.APS"
"Test2.dsw"
"Test2.cpp"
"History.txt"


圧縮実行関数の第3引数に返される情報は以下のようになっています。
--------------------------------------------------------
Scanning
Creating archive D:\Tmp\~4745375.7z
Compressing WMI.APS
Compressing Test2.cpp
Compressing Test2.dsw
Compressing History.txt
Everything is Ok

以上、よろしくお願いします。



▲[ 849 ] / ▼[ 851 ]
NO.850  Re[5]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない
□投稿者/ Akky -(2006/05/27(Sat) 23:51:53)
□U R L/ http://akky.cjb.net/
どうやらリストファイルではUNICODEファイル名は使用できないみたいですね。
7-Zipの履歴を見ると何かバージョンアップで改善されているのでそんな感じがします。
# - New switch: -scs{WIN|DOS|UTF-8} specifies charset for list files.
# Default charset for list files is UTF-8 now.

実際、手元の新バージョンでは問題ありませんでした。
次のバージョン(4.42.0.1)で修正されます。
リリースはテストが終わるまでもう暫くお待ちください。



―――けどこりゃ不味いすね。
リストファイルのデフォルトキャラクタセットがUTF-8に変更されてますので
旧バージョンとの互換性が…。
UNICODEモードじゃない時は強制的に-scsWINを付けるようにするか…。



▲[ 850 ] / ▼[ 852 ]
NO.851  Re[6]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない
□投稿者/ Akky -(2006/05/27(Sat) 23:55:40)
□U R L/ http://akky.cjb.net/
追記

テストも碌にしてないバグが沢山有ろう新バージョンのβ版でよければテスト用にどうぞ。
http://akky.cjb.net/7-zip32.zip



▲[ 851 ] / 返信無し
NO.852  Re[7]: 7-Zip32:Unicode出力のファイルリストを使用すると正常に圧縮されない
□投稿者/ SAKASE -(2006/05/28(Sun) 17:51:30)
□U R L/
解決済み!
SAKASEです。

> 次のバージョン(4.42.0.1)で修正されます。
> リリースはテストが終わるまでもう暫くお待ちください。

了解しました。次のバージョンアップを待ちたいと思います。

> テストも碌にしてないバグが沢山有ろう新バージョンのβ版でよければテスト用にどうぞ。
> http://akky.cjb.net/7-zip32.zip

早速ダウンロードして試してみました。
圧縮実行関数の第3引数に返される情報には、UNICODE文字のファイル名が含まれていませんでしたが、圧縮ファイルには登録されていました。
とりあえず、報告まで...




- Child Tree -