質問編集履歴

1

質問内容をもっと詳しく書きました。

2020/06/25 15:51

投稿

toroleaman
toroleaman

スコア95

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,12 @@
1
- zipファイルに含まれるテキストファイルを変更して、zipに再び戻して、保存したいのですが、
1
+ zipファイルに含まれるテキストファイルの内容を変更して、zipに再び戻して、保存したいのですが、
2
2
 
3
- 元のファイルがSJISの場合、文字化けてしいます。
3
+ 元のファイルの内容がSJISの場合、zipに戻すと問題が発生します。
4
+
5
+ zipファイルを解凍して、テキストファイルを開くと、文字化けしてしまいます。
6
+
7
+ SJISで作られてデータをUTF-8で保存しているため、
8
+
9
+ テキストエディタ等で、「文字コードを指定」して開いても文字化けしていました。
4
10
 
5
11
 
6
12
 
@@ -11,6 +17,10 @@
11
17
  └def.txt UTF-8で作成されたファイル
12
18
 
13
19
  ```
20
+
21
+
22
+
23
+ 処理としては、ZipInputStreamでzipファイルを読み込んで、内容を変更後、ZipOutputStreamでzipに戻しています。これによって、作成されたzipファイルを解凍して、テキストファイルを開くと文字化けしています。
14
24
 
15
25
 
16
26
 
@@ -31,3 +41,9 @@
31
41
  BufferedReader br = new BufferedReader(isr);
32
42
 
33
43
  ```
44
+
45
+ Javaの文字コードは、UTF-8だと思うので、何も指定しないと、UTF-8で保存されてしまいます。
46
+
47
+ 文字コードを意識する必要もなく、byteコードで読み込んでbyteコードで出力すれば、
48
+
49
+ 文字化けしないのではないかと思うのですが、ZipOutputStream以外に、どんなクラスを使うのが適切なのでしょうか。byteコードで入出力できるzipクラスはありますでしょうか。