-------------------------------------文件内容转换: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编码(只是文件名编码的转换,文件内容不会发生变化)


用shell批量编码转换的更多相关文章

  1. 使用vbs脚本进行批量编码转换

    使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看分析在Linux系统下开发的项目代码,我们知道Linux系统中文本文件默认编码格式是UTF-8,而Windows中文系统中的默 ...

  2. python实现文件批量编码转换

    起因:大三做日本交换生期间在修一门C语言图像处理的编程课,在配套书籍的网站上下载了sample,但是由于我用的ubuntu18.04系统默认用utf-8编码,而文件源码是Shift_JIS编码,因而文 ...

  3. Linux查看文件编码格式及文件编码转换

    Linux查看文件编码格式及文件编码转换   如果你需要在Linux 中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而L ...

  4. 从windows到linux的shell脚本编码和格式问题

    从windows到linux的shell脚本编码和格式问题   从windows到Linux的shell脚本编码和格式问题 1.异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh s ...

  5. 编码转换,基础,copy

    阅读目录 编码转换 基础补充 深浅拷贝 文件操作 一,编码转换 1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符. 没有中⽂, 8个01代码, 8个bit, ...

  6. python基础-2 编码转换 pycharm 配置 运算符 基本数据类型int str list tupple dict for循环 enumerate序列方法 range和xrange

    1.编码转换 unicode 可以编译成 UTF-U GBK 即 #!/usr/bin/env python # -*- coding:utf-8 -*- a = '测试字符' #默认是utf-8 a ...

  7. 在Vim中查看文件编码和文件编码转换

    在Vim中查看文件编码和文件编码转换 风亡小窝 关注  0.2 2016.09.26 22:43* 字数 244 阅读 5663评论 0喜欢 2 在Vim中查看文件编码 :set fileencodi ...

  8. Linux:从windows到linux的shell脚本编码和格式

    从windows到linux的shell脚本编码和格式问题 异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh start.sh,时会报Command not found等等的错误, ...

  9. 烂泥:学习tomcat之通过shell批量管理多个tomcat

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司的业务是使用tomcat做web容器,为了更有效的利用服务器的性能,我们一般部署多个 ...

随机推荐

  1. 关于appcompat_v7兼容包的详细说明

    1.appcompat_v7包的由来? appcompat_v7是Google提供的向下兼容包,是针对API level 7(Android2.1)及以上版本所开发的,其作用是为了让兼容低版本API( ...

  2. [技术]浅谈OI中矩阵快速幂的用法

    前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...

  3. C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 一点感想 很意外的,第一 ...

  4. 云端TensorFlow读取数据IO的高效方式

    低效的IO方式 最近通过观察PAI平台上TensoFlow用户的运行情况,发现大家在数据IO这方面还是有比较大的困惑,主要是因为很多同学没有很好的理解本地执行TensorFlow代码和分布式云端执行T ...

  5. MarkDown入门指南

    标题 标题是每篇文章必备而且最常用的格式. 在Markdown中,如果想将一段文字定义为标题,只需要在这段文字前面加上 #,再在 # 后加一个空格即可.还可增加二.三.四.五.六级标题,总共六级,只需 ...

  6. Python Class System

    1.序言 本文旨在说明:在Python里自定义class时,方法的第一个参数必须是该class的instance自身的引用(一般用self命名). 在其他语言里,定义方法的时候,第一个参数不必是类实例 ...

  7. NoSql数据库简介及Redis学习

    NO-Sql数据库:Not Only不仅仅是SQL 定义:非关系型数据库:NoSQL用于超大规模数据的存储.(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据).这些类型的数据存储不需要固 ...

  8. 剑指OFFER——调整数组顺序使奇数位于偶数前面

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 剑指offer书里的版本, ...

  9. ELK5.0搭建部署

    ###关闭防火墙 service iptables stop ###定义vi=vim alias vi=vim vi ~/.bashrc alias vi='vim' yum -y install l ...

  10. mysql-函数CASE WHEN 统计多个字段

    case when语句,用于计算条件列表并返回多个可能结果表达式之一.CASE 具有两种格式:1.简单 case 函数: case input_expression when when_express ...