- - PR -
zipファイルを文字化けせずに作る方法
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-08-12 18:17
試してみると正にその通りでした。 どうもありがとうございました。 | ||||||||
|
投稿日時: 2004-03-24 18:00
みなさまの書き込みを参考にさせていただいています。
onokeさんのソースをもとにお犬様のご指示通り サンプルを下記のように作ったのですが 文字化けがなおりません。いろいろ試したのですが うまくいかずご教授いただけないでしょうか? よろしくお願いします。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− import java.io.*; import java.util.*; import java.util.zip.*; public class ZipTest{ public static void main( String[] args ){ try{ FileOutputStream f = new FileOutputStream( "ziptest.zip" ); ZipOutputStream z = new ZipOutputStream( f ); FileInputStream fin = null; ↓コメントにしました //BufferedReader in = null; for( int i=0; i<args.length; i++ ){ System.out.println( "Writing file " + args[i] ); fin = new FileInputStream( args[i] ); ↓コメントにしました //in = new BufferedReader( new InputStreamReader( fin, "SJIS" )); z.putNextEntry( new ZipEntry( args[i] ) ); int c; ↓inからfinにしました while((c=fin.read()) != -1 ){ z.write( c ); } ↓コメントにしました in.close(); } z.close(); f.close(); }catch( Exception e ){ e.printStackTrace(); } } } | ||||||||
|
投稿日時: 2004-03-24 18:59
私も最近までzipファイルの日本語文字化けに悩んでいました。
すこし論点とはずれますが org.apache.tools.zip.ZipFile (Ant1.6.1にも入ってます) を使うとうまくいきました。 ソースコードも公開されていますので何かの参考になるかもしれません。 | ||||||||
|
投稿日時: 2004-03-24 19:35
xucker様 ありがとうございます。
私も今気づいたのですがzipファイルの 中のファイルに記述された日本語ではなく zipファイルに含めたファイル名が 日本語だと化けるのでファイル名の 日本語対応方法を探しています。 もしご存じでしたらご教授いただけますでしょうか。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2004-03-24 20:56
Javaのバージョンが不明なので回答に困りますが・・・。 先人達の努力を無駄にしないで検索しましょう。 http://java-house.jp/ml/archive/j-h-b/026764.html#body http://java-house.jp/ml/archive/j-h-b/026765.html#body この情報は、JavaHouse の Topics にしっかりとリンクされてます。 | ||||||||
|
投稿日時: 2004-03-25 09:40
SJ0392さんレスありがとうございます
javaのヴァージョンは1.3.1です。 ちなみにリンク先のプログラムも実行しましたが 日本語は化けてしまいます。 やはりApachのソースを利用するしかないのでしょうか? 利用すれば対応できるのでしょうか? | ||||||||
|
投稿日時: 2004-03-25 22:01
windows2000環境にて ZIPの圧縮と展開を続けて行うプログラムを作成し実行してみました。
未記入 さんの回答になりませんが、自作したものは jdk1.3.1_09 で成功。 他に jdk1.1.8_10 では展開ファイル名は文字化け。 jdk1.4.1 では展開ファイル名は正常。 以下参考まで・・・。(関連しそうな部分以外かなり情報削りました) 圧縮時の ZipEntry 関連部分
展開時の ZipEntry 関連部分
ちなみに、これらの情報は google で検索して見つけた情報を元に作成しました。 結局 jdk1.1 では「ASCIIの範囲の文字しか扱えない」、jdk1.2 では「Unicodeの任意の文字が扱える」という事なんでしょう。 | ||||||||
|
投稿日時: 2004-03-26 10:42
質問者が、単に「文字化けする」としか表現していないから
ややこしくなっているような気がします。 未記入さんは何を見て「文字化けしている」と言っていますか? (1)Javaで作ったzipファイルが、Javaで作られたプログラムで 展開しようとしても化けている。 (jar -tvf xxx.zip などで確認) (2)Javaで作ったzipファイルが、一般の圧縮解凍ツールで中を 見ると化ける(化けているように見える)。 とでは、意味が違うので。 (1)はありえないので、そういう状況であればプログラムが悪い のでしょう。 (2)であれば、SJ0392さんの示したJavaHouseの過去の投稿に、 しっかりとそういうものだという趣旨のことが書かれています。 ちなみに、上記の話は標準API(java.util.zip.*) を使った場合 の話であり、xuckerさんの書かれているように標準APIでは無い ものであれば対応可能なものもあります。 (その場合、上記(1)のようにjarコマンドを使った確認では 文字化けすることになりますが)
と聞く前に、情報は示されているのでgoogle等でキーワードに 「org.apache.tools.zip.ZipFile」と入れて検索したほうが いちいち聞きなおすより早い場合があります。 まさしくSJ0392さんの言うように、先人の知恵を(以下略)です。 | ||||||||
