linux各種中文亂碼解決辦法整理


 

遠程登錄服務器用vim在終端下編輯查看文件經常會遇見各種中文亂碼問題。
做如下設置可基本解決vim中文亂碼問題

首先查看系統對中文的支持
locale -a | grep zh_CN

輸出樣例如下
zh_CN.gbk
zh_CN.utf8

vim 只能正確識別列表中的中文編碼文件,如需識別其他編碼類型的中文文件,則需要做系統升級

vi ~/.bash_profile
文件末尾添加

export LANG="zh_CN.UTF-8"

export LC_ALL="zh_CN.UTF-8"

 

vim與編碼相關的參數:

  1. fileencoding,用於配置打開文件和保存文件的編碼,但只能有一個值,只適合少數文件都是同種編碼的環境,所以一般不使用
  2. fileencodings, 從名字上看就知道是fileencoding的增強版,可以配置多種不同的編碼,常見的配置為,配置好之后,列表中的文本編碼只要合法,都能被vim正確 的讀取,建議配置:set fileencodings=utf-bom,utf-8,gbk,gb2312,gb18030,cp936,latin1
  3. encoding,vim內部編碼,vim讀取文件之后,但並不以讀取文件的編碼來處理,而是會轉換成內部編碼的格式,這個編碼一般與操作系統相關,linux下utf-8居多,中文windows下則是gdk,建議配置:set encoding=utf-8 
  4. termencoding,vim輸出的編碼,輸出指輸出到操作系統或命令終端等,默認與操作系統的語言編碼一致,如果使用linux命令終端,建議終端和linux系統配置相同的編碼,然后配置相同的termencoding,否則顧全了vim就顧不上shell,不過如果shell不存在中文名文件,則配置終端和 termencoding一致即可,對於windows,能自動的識別gbk和utf-8,不用特殊配置,建議配置:set termencoding=utf-8
  5. fileformats,用於區分操作系統,主要是回車\r\n的區別,建議配置:set fileformats=unix,dos

常見的亂碼有以下幾種情形

 (1)將windows環境下的文件rz到linux下時文件出現亂碼

        解決方案:1.在rz之前使用notepad++將文件格式轉化為UTF-8無BOM格式或者ANSI編碼格式;2.set encoding=utf-8;

 (2)secureCRT或者xterm2編輯環境中出現亂碼,只需在會話選項中調節字符編碼為GB2312或者UTF-8

 (3)當對日志文件進行vim編輯時出現亂碼,大多數情況下是因為日志文件的格式為GB2312。

        解決方案:1.set encoding=GB2312;2如果方案1不起作用的話,調整secureCRT或者xterm2的編輯環境為GB2312

  (4)wget下載文件名亂碼

       解決方案:一般情況下加上–restrict-file-names=nocontrol,例如wget --restrict-file-names=nocontrol -m www.xxx.com/

  (5)cat文件正常,vim文件不正常

      解決方案:直接寫入/etc/vim/vimrc  ,最后一行加上

  1. set fileencodings=gb2312,utf-8  
  2. set fileencoding=gb2312  
  3. set termencoding=utf-8  

 

 

批量文件轉碼命令:iconv -c -f gbk -t utf-8 $data_path/$item_uv


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM