実現したいこと
サーバーで圧縮した日本語が含まれるPDFファイルをZIPにまとめ、正常にクライアントが解凍できるようにしたい。
発生している問題・分からないこと
PDFファイルをZIPにまとめる際、生成されたZIPファイルを解凍すると中身のPDFファイルの日本語が文字化けする(数字は正常)
エラーメッセージ
error
1エラーメッセージはありません。 2ツールには単体のPDFをダウンロードする機能もあるのですが、単体の方では問題なく日本語になっています。 3
該当のソースコード
Python
1def create_zip_with_logs(zip_path, file_paths, log_lines): 2 with zipfile.ZipFile(zip_path, 'w', compression=zipfile.ZIP_DEFLATED) as zipf: 3 # PDFファイルを追加 4 for file_path in file_paths: 5 arcname = os.path.basename(file_path) 6 print(f"[DEBUG] アーカイブ名: {arcname}") 7 8 zip_info = zipfile.ZipInfo(arcname) 9 zip_info.compress_type = zipfile.ZIP_DEFLATED 10 11 # ファイルのタイムスタンプを設定 12 stat = os.stat(file_path) 13 zip_info.date_time = datetime.fromtimestamp(stat.st_mtime).timetuple()[:6] 14 15 with open(file_path, 'rb') as f: 16 zipf.writestr(zip_info, f.read())
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ChatGPTやClaudeで投げてみても解決しませんでした。
文字コードの設定周りがかわりました。
補足
開発環境:Windows
本番環境:Ubuntu
クライアント:Windows GoogleChrome
文字化け環境
開発環境→Windows クライアント→Windows
zip_pathには作成したZIPファイルのパス
file_pathsには圧縮予定のファイル(今回はPDF)のパス
が代入されます。
###追加補足
ご回答、コメントの方ありがとうございます。
わかりづらかった部分があるかと思いますので追加で補足させていただきます。
文字化けするのはZipに圧縮したPDFの「ファイル名」です。
念の為圧縮前にprintでファイル名を確認しているのですがそこまではコンソールに日本語でちゃんと表示されます。
圧縮し、WindowsのChrome経由でダウンロードしたら文字化けしてしまう。
という形です。
