この記事は、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パラメータを指定し、常に指定された文字セットでファイルを表示および解凍します
/etc/environmentに2行を追加します
UNZIP="-O CP936" ZIPINFO="-O CP936"
これがアーカイブファイルですGnome デスクトップの管理者 (file-roller) は通常、unzip を使用して中国語を解凍できますが、file-roller 自体は unzip に渡すエンコーディングを設定できません。
【関連する推奨事項】
2. データインポート時の innodb_index_stats の詳細な説明 プロンプトテーブルの主キー競合エラー
3. 詳しい例の説明 mysql の innodb_autoinc_lock_mode
4. 5.Linux はサーバーのネットワーク状態をどのように検出しますか
以上がLinux で zip ファイルを解凍すると文字化けが発生する場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。