眾所周知在 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 則相反

平時我們在不同系統之間進行交換檔案時就需要注意這些問題,以免造成錯誤