zoukankan      html  css  js  c++  java
  • Linux下解决zip压缩包文件名乱码问题

    1.unar


    这个工具会自动检测文件的编码,也可以通过-e来指定:

    $ unar file.zip
    

    即可解压出中文文件。

    Debian下默认安装了unar,Archlinux下需要安装AUR中的unarchiver

    $ yaourt -S unarchiver
    

    2.unzip


    可以给unzip打补丁,这样通过-O选项就能指定编码

    $ unzip -O gbk myzip.zip
    

    Archlinux下可以直接安装AUR下的unzip-iconv或者unzip-natspec

    $ yaourt -S unzip-iconv
    

    注:直接用unzip解压gbk编码的zip压缩包得到一个目录,在shell下查看可能会得到类似''$'274362300372''ģ'$'260345'这样的乱码目录名,这时候在文件管理器里面打不开这个文件夹,也删不掉。在shell里面用rm -rf 加上上面那一串乱码也没法删掉。这时候可以在名字前面加上./,在用rm -rf删除,就能删掉了

    3.convmv


    1.convmv简介

    convmv存在于常见操作系统的软件仓库中。如果当前没有工具,可以直接安装。

    $ convmv -f 源编码 -t 新编码 [选项] 文件名
    

    常见有用的选项有:

    -r
    递归处理子文件夹
    --notest
    真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
    --unescape
    可以做一下转义,比如把%20变成空格,如果你不知道这是在做什么,就不要尝试了。

    2.实例

    一般可解决解压zip而产生的中文文件名乱码的步骤:先试着将gbk文件名改为UTF-8:

    $ convmv -f gbk -t utf8 -r MY_DIR
    

    如果确认输出无误:

    $ convmv --notest -f gbk -t utf8 -r MY_DIR
    

    3.处理zip文件乱码

    配合 7z ,可以解决 zip 文件中的中文文件编码问题。

    $ mkdir dir_path
    $ LC_ALL=C 7z -odir_path x zip文件名.zip
    $ convmv -f gbk -t utf8 -r dir_path
    

    注:LC_ALL

    确认无误后:

    $ convmv -f gbk -t utf8 -r dir_path --notest
    

    4.内容乱码


    1.iconv工具

    $ iconv -f gbk -t utf-8 file1 -o file2  # gbk编码转换为utf-8
    

    2.enca工具

    enca会根据文件内容猜测编码,可以用于检测和转换文件的编码

    # -L指明文件语言,一般可以省略
    $ enca -L zh_CN file    # 检查文件的编码
    $ enca -L zh_CN -x UTF-8 file  # 将文件编码转换为"UTF-8"编码
    $ enca -L zh_CN -x UTF-8 <file1 >file2 # 如果不想覆盖原文件可以这样
    
  • 相关阅读:
    【计算机组成与系统结构】计算机的分类与发展趋势
    【计算机组成与系统结构】计算机的硬件系统和软件系统
    【Linux常用指令整理2】查看文件,软、硬链接
    【计算机的物理实现】PN结的电容效应
    【计算机组成与系统结构】电子计算机的诞生
    编译hadoopeclipseplugins1.2.1插件步骤
    Google抛弃MapReduce使用Cloud Dataflow
    Hadoop家族学习路线图
    2.1 Hadoop Eclipse Plugin 配置及安装
    Hadoop学习笔记目录
  • 原文地址:https://www.cnblogs.com/tonyc/p/8059802.html
Copyright © 2011-2022 走看看