Linux系統查找替換非UTF-8編碼文件的解決方法

        UTF-8是Linux系統下的一種可變長度的字符萬國碼,使用UTF-8碼就可以支持多種語言。但是某些文件並不是UTF-8編碼的,這個時候我們可以用命令來查找替換非UTF-8碼,下面就來介紹一下Linux系統查找替換非UTF-8編碼文件的方法。

 

Linux系統查找替換非UTF-8編碼文件的方法

 

  開始之前,請先安裝enca這個軟件包。enca是Linux等系統下用來查看文件編碼和轉換文件編碼的工具。

  下面一行Linux命令能夠查找當前目錄下所有文件中,哪些文件不是UTF-8編碼。我對文件加瞭些限制,用find命令時候,排除瞭所有目錄下的.svn目錄,且隻查找後綴為.php的文件。

  命令1:

  jw@~/sqlite>

  find 。 ! -iregex ‘.*\.svn.*’ -type f -name ‘*.php’ -exec bash -c “enca -L zh_CN {}|grep GB2312 》 /dev/null && echo {}” \;

  ./sqlite_utility.php

  ./sqlite_result.php

  ./sqlite_forge.php

  ./sqlite_driver.php

  既然找到瞭這些非UTF8編碼的文件,接下來再用一條命令將他們都轉換成UTF8編碼。

  命令2:

  jw@~/sqlite>

  find . ! -iregex ‘.*\.svn.*’ -type f -name ‘*.php’ -exec bash -c “enca -L zh_CN {} | grep GB2312 》/dev/null && enconv -L zh_CN -x UTF-8 {}” \;

  當你用命令2 全部轉換完成後,如果你期待命令1的輸出為空,那麼你就錯瞭。實際上英語字母的utf8編碼和ASCII編碼是一樣的。當一個全是英文字母的文件用UTF8 w/o BOM編碼保存,那麼enca會識別他是一個ACSII編碼的文件。所以,你猜到瞭,命令2做瞭一些無用功。

  以上就是Linux系統查找替換非UTF-8編碼文件的方法瞭,這樣一來就不用擔心Linux文件不是UTF-8編碼而無法顯示其他語言瞭,想瞭解更多內容可以對GuideAH進行關註!

閱讀更多: