🐡

Mac -> Windowsで文字化けしないzipの作り方

2024/01/24に公開

windowsで解凍すると文字化けする

windows userに言われて知ったけど、macの右クリックでzip化したものはwindowsで解凍すると文字化けするらしい。

これは単に文字コードの問題なので、文字コードを変換してやればいいが、zip化って基本は大量ファイルに対してするものなので、文字コードを変換するのは大変。

軽くググると怪しいダウンロードサイトがいっぱい出る

使うの怖い

以下でいけた

# %%
import os
import zipfile


def zip_folder_for_windows(source_folder, output_zip):
    """
    ZIP a folder with filenames encoded in CP932 for compatibility with Windows.

    Args:
    source_folder (str): The path of the folder to be zipped.
    output_zip (str): The path of the output ZIP file.
    """
    with zipfile.ZipFile(output_zip, "w", zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(source_folder):
            for file in files:
                file_path = os.path.join(root, file)
                # Encode the file path relative to the source folder in CP932
                arcname = (
                    os.path.relpath(file_path, source_folder)
                    .encode("cp932", "ignore")
                    .decode("cp932")
                )
                zipf.write(file_path, arcname)


# Example usage
src_dir = "/path/to/source/folder"
output_zip = "output.zip"
zip_folder_for_windows(source_folder, output_zip)

Discussion