zipファイルの解凍後に文字化けしてしまう現象を解決する方法

スポンサーリンク

ファイル解凍で文字化けするのはOSによりエンコード形式が異なるのが原因

検索すればすぐにでてきますが、一応小ネタとして引用させていただきます。

Mac、Linuxではファイルを圧縮する際ファイル名をutf-8でエンコードするのに対し、Windowsではファイル名をCP932(Shift_JIS)でエンコードするのが原因。

引用元: 日本語を含むZIPファイルを文字化けせず解凍する方法

ラプラスとかのソフトで開くと、文字化けしてしまうことがあるんです。

スポンサーリンク

解凍ソフトのラプラスには文字化けしないよいうにする設定項目がない

「Lhaplus」定番の圧縮・解凍ソフト – 窓の杜

ファイル解凍ソフトはラプラスを使わずに、window10のエクスプローラーで解凍すると文字化けはおこりませんでした。

解凍をラプラスに関連づけていると、ラプラスで解凍します。ラプラスに設定項目はないか探してみましたが、どうも見当たらないみたいです。よくよく考えているとなんでラプラスを使っているのかわからなくなりましたが、たまにwindowsでは開けない拡張子があるときに役に立つのかなと思いました。

7-zipを使って解凍する手もある

解凍・圧縮ソフトはラプラス以外にも「7-zip」という有名なソフトがあります。

こちらのソフトを使うとパスワードで保護された圧縮フォルダを作成することが可能です。

わたしが実際に使ったわけではないですが7-zipを使って解凍すればファイル名が文字化けしないかもしれません。↓

「7-Zip」7z形式などに対応した解凍・圧縮ソフト – 窓の杜

pythonスクリプトを使ってファイルを圧縮・解凍する

他の圧縮・解凍方法としてpythonスクリプトでファイルを圧縮・解凍する方法があります。

プログラミングの知識がないと難しいかもしれませんがとりあえずコードをのせておきます。pythonではzipfileモジュールとosモジュールを使うことによって、高速にファイルを圧縮できます。

zipfileモジュールを使って圧縮するコード

import zipfile

def compress_folder(folder_path, zip_path):
    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        # フォルダ内のすべてのファイルを圧縮する
        for foldername, subfolders, filenames in os.walk(folder_path):
            for filename in filenames:
                file_path = os.path.join(foldername, filename)
                # 圧縮するファイル名を指定して追加する
                zipf.write(file_path, os.path.relpath(file_path, folder_path))

# 使用例
folder_to_compress = 'path/to/folder'
output_zip_file = 'path/to/output.zip'
compress_folder(folder_to_compress, output_zip_file)

zipfileモジュールを使って解凍するコード

import zipfile
import os

def extract_zip(zip_path, extract_to):
    with zipfile.ZipFile(zip_path, 'r') as zipf:
        # zipファイルを解凍先のフォルダに展開する
        zipf.extractall(extract_to)

# 使用例
zip_file_to_extract = 'path/to/file.zip'
output_folder = 'path/to/extracted/folder'
extract_zip(zip_file_to_extract, output_folder)

コメント

タイトルとURLをコピーしました