问题描述

相信不少Linux小白都会遇到这样一种情况:在服务器(Linux英文)上下载带有中文字符的文件会出现乱码。

本文将介绍几种解决此问题的方法,多数从网站摘抄或汇编而来,但亲测有效。

原因探讨

出现乱码主要是因为系统之间编码方式不同。中文版windows文件名编码方式一般是gbk,而Linux默认是utf-8。当在Linux中下载编码是gbk的文件时,就会导致显示乱码。

解决方法

系统完全不支持中文,文件名显示错误

方法:安装中文支持

  1. 安装中文包

    1
    sudo apt-get install language-pack-zh-hant language-pack-zh-hans
  2. 设置环境变量,在LANG这一栏中增加语言和编码

    1
    sudo vim /etc/environment

    修改如下两行:

    1
    2
    LANG="zh_CN.UTF-8"
    LANGUAGE="zh_CN:zh:en_US:en"
  3. 使配置生效

    1
    sudo dpkg-reconfigure locales

RAR文件

  1. 安装unar

    1
    sudo apt-get install unar

    unar常见参数:

    -o:指定解压结果保存的位置

    如:unar test.zip -o /home/
    -e:指定编码

    如:unar -e GBK test.zip
    -p:指定解压密码
    如:unar -p 123456 test.zip

  2. 依次尝试几种编码解压:GBK、GB2312、GB18030

    1
    unar -e GB2312 test.zip

ZIP文件

该方法并未测试,转载来自FindHao-Linux文件乱码

如果系统自带的unzip支持-O选项,则直接使用以下命令即可,这样最方便简单,然而debian stable版本自带的就不支持。

1
unzip -O GBK you_zip_file.zip

7z文件

该方法本人测试用于解压RAR文件无效,转载来自FindHao-Linux文件乱码

先设置bash的lang,用7z解压出文件,然后再用convmv转换文件格式是这个方法的主要内容。

1
2
3
4
5
6
sudo apt-get install p7zip-full convmv
LANG=C
7z x zip_file.zip
convmv -f gbk -t utf8 --notest -r your_unzipped_file_floder/
或者先cd到解压好的地方
convmv -f gbk -t utf8 --notest ./*

参考资料

Linux 下 zip 文件解压乱码如何解决?

Linux文件乱码