众所周知在 Windows 与 Unix 的之间的字符集编码和正则字元定位符是有很大的差异的,如果在不同系统之间传递档案总会带来因为字符集编码和字元定位符的不同带来很多的错误。
这里先说一下字符集编码,在 unix,一般使用的是 Utf-8,而在 Windows 中系统中用的就比较多了,大部分有 GB2312(中文简体)、 BIG5(中文繁体)等等,那么如果使用的字符集不正确原始档开启就会有乱码,这个时候我们就需要用 iconv 来对原始档进行转换,以适应不同系统环境,iconv 的用法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
用法: iconv [选项…] [档案…]
转换给定档案的编码。
输入/输出格式规范:
-f, –from-code=名称 原始文字编码
-t, –to-code=名称 输出编码
资讯:
-l, –list 列举所有已知的字符集
输出控制:
-c 从输出中忽略无效的字元
-o, –output=FILE 输出档案
-s, –silent 关闭警告
–verbose 列印进度资讯
-?, –help 给出该系统求助列表
–usage 给出简要的用法资讯
-V, –version 列印程式版本号
这样我们就可以通过这个指令写成指令码用于实际生产环境中,一般来说这个站群软件在系统安装时都有预设安装,如果没有可以到 gnu 的网站上下载原始码包安装,这个安装没有什么依赖包,安装很简单的,这里就不赘述了
1
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
除了字符集编码以外在 Windows 与 Unix 之间使用的正则定位符还有一些区别,如在 Windows 编辑的档案在 unix 系统中开启会,在每一行的行尾都会有 “^M”,这个就是两者间的正则定位符不一样的问题了。在 Windows 中行尾结束符为 “^M$”,而在 unix 系统中则为 “$”, 这样我们在使用的时候就会有很多的困扰,那么这个就需要使用 unix2dos dos2unix2 个指令来对正则定位符进行转换,在使用这 2 个指令的时候,在 yum 源配置正确的时候可以直接安装,使用方法如下:
1
2
3
4
5
6
7
8
9
[root@localhost ~]# yum -y install unix2dos dos2unix
dos2unix 与 unix2dos:
-k:保持输出档案的日期不变
-q:安静模式,不提示任何警告资讯。
-V:检视版本
-c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 预设是:ASCII 。
-o:写入到原始档
-n:写入到新档案
两者的引数选项使用方法都是一样的,区别是 dos2unix 是把 DOS(即 Windows)转成 UNIX 格式,而 unix2dos 则相反
平时我们在不同系统之间进行交换档案时就需要注意这些问题,以免造成错误