2021-05-12 14:32:11
Windows與Unix的字元轉換
眾所周知在Windows與Unix的之間的字元集編碼和正則字元定位符是有很大的差異的,如果在不同系統之間傳遞檔案總會帶來因為字元集編碼和字元定位符的不同帶來很多的錯誤。
這裡先說一下字元集編碼,在unix,一般使用的是Utf-8,而在Windows中系統中用的就比較多了,大部分有GB2312(中文簡體)、BIG5(中文繁體)等等,那麼如果使用的字元集不正確原始檔開啟就會有亂碼,這個時候我們就需要用iconv來對原始檔進行轉換,以適應不同系統環境,iconv的用法如下:
用法: iconv [選項...] [檔案...]
轉換給定檔案的編碼。
輸入/輸出格式規範:
-f, --from-code=名稱 原始文字編碼
-t, --to-code=名稱 輸出編碼
資訊:
-l, --list 列舉所有已知的字元集
輸出控制:
-c 從輸出中忽略無效的字元
-o, --output=FILE 輸出檔案
-s, --silent 關閉警告
--verbose 列印進度資訊
-?, --help 給出該系統求助列表
--usage 給出簡要的用法資訊
-V, --version 列印程式版本號
這樣我們就可以通過這個指令寫成指令碼用於實際生產環境中,一般來說這個軟體在系統安裝時都有預設安裝,如果沒有可以到gnu的網站上下載原始碼包安裝,這個安裝沒有什麼依賴包,安裝很簡單的,這裡就不贅述了
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源設定正確的時候可以直接安裝,使用方法如下:
[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則相反
平時我們在不同系統之間進行交換檔案時就需要注意這些問題,以免造成錯誤。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-02/140455.htm
相關文章