• 用shell批量编码转换


    -------------------------------------文件内容转换:iconv--------------------------------------

    通常,从其他平台拷贝过来(Linux)的文件,比如mac或win,打开后都是有编码错误的,尤其是中文编码。

    这里主要是纯文本文件,pdf或者office文件不谈,他们只存在文件名的乱码,不存在文件内容的乱码(因为他门本来就没有编码)。 

    造成的原因很简单,因为前两个系统上的文本文件都是默认gbk编码格式的,gbk是个主要为中文字体服务的编码,其中也包含英文字母和数字,因此对于中国用户来说,gbk编码就能写一切的文本了。

    但是Linux平台世界统一utf8,这就麻烦了,Linux的文本编辑器或查看器都默认用utf8打开文本文件,并且午饭判断文件的原编码方式!!!(这点不懂的留言)

    iconv命令

    iconv命令是个很方便的文件编码转换命令:

    Usage: iconv [OPTION...] [FILE...]

     主要的用法参数:
      -f, --from-code=NAME       encoding of original text
      -t, --to-code=NAME         encoding for output

    所以通常-f是gbk,-t是utf8

    输出的话,既可以--output也可以输出重定向‘>’到文件

    但是,想要批量的修改文件编码,结合find命令和他的-exec选项是个不错的选择:

    比如:find . -type f  -exec iconv {} -f gbk -t utf8 --output ./new/{} ;

    就是将目录下的所有文件转化成utf8复制到新的目录下。

    --------------------------------------文件名转换------------------------------------------

    但是,如果想解决文件名乱码的问题(注意不是文件内容而是文件名),需要另一条命令:convmv

      从linux往windows拷贝文件或者从windows往Linux拷贝文件,有时会出现中文文件名乱码的情况,出现这种问题的原因是因为,windows的文件名 中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致,所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。
        在Linux中专门提供了一种工具convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。

        1、先看一下你的系统上是否安装了convmv,如果没安装的话在终端输入下面的命令安装:
           sudo yum -y install convmv

        2、下面看一下convmv的具体用法:
           convmv -f 源编码 -t 新编码 [选项] 文件名
           常用参数:
              -r 递归处理子文件夹
              --notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
              --list 显示所有支持的编码
              --unescap 可以做一下转义,比如把%20变成空格
        比如我们有一个utf8编码的文件名,转换成GBK编码,命令如下:
        convmv -f UTF-8 -t GBK --notest utf8编码的文件名

        这样转换以后"utf8编码的文件名"会被转换成GBK编码(只是文件名编码的转换,文件内容不会发生变化)



  • 相关阅读:
    20140630 科技脉搏-互联网精神之“我不是为了输赢,我就是认真”
    iOS 获取本地视频的缩略图
    iOS App与iTunes文件传输的方法和对iOS App文件结构的说明
    罗振宇自媒体品牌“罗辑思维”估值1亿背后:媒体通往社群之路
    20140622 科技脉搏 -互联网思维之“一群人团结起来占其他人便宜”
    20140616 科技脉搏 -最大颠覆来自创业公司与边缘产业
    关于流媒体(m3u8)的下载与播放
    20140608 科技脉搏 -下半身需求是人类共同需求,有多少人就有多大市场
    IOS遍历未知对象属性、函数
    iOS中使用 Reachability 检测网络
  • 原文地址:https://www.cnblogs.com/jinhengyu/p/7516413.html
Copyright © 2020-2023  润新知