日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux vim顯示utf-8文檔亂碼怎么辦?( 二 )


簡(jiǎn)而言之 , fileencoding是Vim中當(dāng)前編輯的文件的字符編碼方式 , Vim保存文件時(shí)也會(huì)將文件保存為這種字符編碼方式 (不管是否新文件都如此) 。
(4)fileencodings
編碼的自動(dòng)識(shí)別是通過(guò)設(shè)置fileencodings實(shí)現(xiàn)的 , 注意是復(fù)數(shù)形式 。fileencodings是一個(gè)用逗號(hào)分隔的列表 , 列表中的每一項(xiàng)是一種編碼的名稱(chēng) 。當(dāng)我們打開(kāi)文件的時(shí)候 , VIM按順序使用fileencodings中的編碼進(jìn)行嘗試解碼 , 如果成功的話 , 就使用該編碼方式進(jìn)行解碼 , 并將fileencoding設(shè)置為這個(gè)值 , 如果失敗的話 , 就繼續(xù)試驗(yàn)下一個(gè)編碼 。
因此 , 我們?cè)谠O(shè)置fileencodings的時(shí)候 , 一定要把要求嚴(yán)格的、當(dāng)文件不是這個(gè)編碼的時(shí)候更容易出現(xiàn)解碼失敗的編碼方式放在前面 , 把寬松的編碼方式放在后面 。例如 , latin1是一種非常寬松的編碼方式 , 任何一種編碼方式得到的文本 , 用latin1進(jìn)行解碼 , 都不會(huì)發(fā)生解碼失敗——當(dāng)然 , 解碼得到的結(jié)果自然也就是理所當(dāng)然的“亂碼” 。因此 , 如果你把latin1放到了fileencodings的第一位的話 , 打開(kāi)任何中文文件都是亂碼也就是理所當(dāng)然的了 。
以下是網(wǎng)上推薦的一個(gè)fileencodings設(shè)置:
set fileencodings=ucs-bom , utf-8 , cp936 , gb18030 , big5 , euc-jp , euc-kr , latin1
其中 , ucs-bom是一種非常嚴(yán)格的編碼 , 非該編碼的文件幾乎沒(méi)有可能被誤判為ucs-bom , 因此放在第一位 。
utf-8也相當(dāng)嚴(yán)格 , 除了很短的文件外(例如許多人津津樂(lè)道的GBK編碼的“聯(lián)通”被誤判為UTF-8編碼的經(jīng)典錯(cuò)誤) , 現(xiàn)實(shí)生活中一般文件是幾乎不可能被誤判的 , 因此放在第二位 。
接下來(lái)是cp936和gb18030 , 這兩種編碼相對(duì)寬松 , 如果放前面的話 , 會(huì)出現(xiàn)大量誤判 , 所以就讓它們靠后一些 。cp936的編碼空間比gb18030小 , 所以把cp936放在gb18030前面 。
至于big5、euc-jp和euc-kr , 它們的嚴(yán)格程度和cp936差不多 , 把它們放在后面 , 在編輯這些編碼的文件的時(shí)候必然出現(xiàn)大量誤判 , 但這是Vim內(nèi)置編碼探測(cè)機(jī)制沒(méi)有辦法解決的事 。由于中國(guó)用戶很少有機(jī)會(huì)編輯這些編碼的文件 , 因此我們還是決定把cp936和gb18030放在前面以保證這些編碼的識(shí)別 。
最后就是latin1了 。它是一種極其寬松的編碼 , 以至于我們不得不把它放在最后一位 。不過(guò)可惜的是 , 當(dāng)你碰到一個(gè)真的latin1編碼的文件時(shí) , 絕大部分情況下 , 它沒(méi)有機(jī)會(huì)fall-back到latin1 , 往往在前面的編碼中就被誤判了 。不過(guò) , 正如前面所說(shuō)的 , 中國(guó)用戶沒(méi)有太多機(jī)會(huì)接觸這樣的文件 。
如果編碼被誤判了 , 解碼后的結(jié)果就無(wú)法被人類(lèi)識(shí)別 , 于是我們就說(shuō) , 這個(gè)文件亂碼了 。此時(shí) , 如果你知道這個(gè)文件的正確編碼的話 , 可以在打開(kāi)文件的時(shí)候使用 ++enc=encoding 的方式來(lái)打開(kāi)文件 , 如:
:e ++enc=utf-8 myfile.txt
上面就是Linux解決Vim顯示utf-8文檔亂碼的方法介紹了 , 出現(xiàn)該亂碼問(wèn)題后 , 可通過(guò)重新設(shè)置fileencodings來(lái)解決 , 希望對(duì)你有所幫助 。

推薦閱讀