この記事は、linuxでのzipファイル解凍文字化け問題を解決する方法を主に紹介します。興味のある友人は参考にしてください。
原因
zip形式ではエンコード形式が指定されていないため、Windowsで生成されたzipファイルのエンコードはGBK/GB2312などとなっており、Linuxで解凍すると文字化けしてしまいます。 Linux のデフォルトのエンコーディングは UTF8 であるためです。
解決策1
7zを使用して解凍します。
# fedora $ su -c 'yum install p7zip convmv' # ubuntu $ sudo apt-get install p7zip convmv
コマンドを実行して解凍する
# 使用7z解压缩 $ LANG=C 7za x your-zip-file.zip # 递归转码 $ convmv -f GBK -t utf8 --notest -r .
解決策2
Windowsで圧縮されたファイルは、システムのデフォルトのエンコードである中国語を使用してファイルを圧縮します。 zip ファイル内でエンコードが宣言されていないため、Linux での解凍は通常デフォルトのエンコードで解凍され、中国語のファイル名が文字化けしてしまいます。
これは 2005 年に誰かがバグとして報告していましたが、info-zip の公式 Web サイトにはエンコードの自動認識が計画に含まれていなかったのでしょう。 Sun は、Java に N 年間存在していた zip エンコーディングの問題に対して同じアプローチを採用しました。
問題を解決するには 2 つの方法があります:
1. unzip 行コマンドで解凍し、文字セットを指定します
unzip -O CP936 xxx.zip (GBK、GB18030 も使用可能)
興味深いのは、解凍マニュアルにはこのオプションの説明がありませんが、unzip --help にはこのパラメータの簡単な説明があります。
2. 環境変数 で、常に指定された文字セットでファイルを表示および解凍するための unzip パラメーターを指定します
UNZIP="-O CP936" ZIPINFO="-O CP936"
以上がLinux で zip ファイルを解凍するときに文字化けが発生する問題の解決策を共有します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。