欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
終端VI支持gb2312
修改.vimrc文件,讓其支持 gb2312就行
"設定文件編碼類(lèi)型,徹底解決中文編碼問(wèn)題
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936

略微查了一下.vimrc中添加內容的含意,這篇文章有相關(guān)解釋。
http://blog.dawnh.net/comment.php?type=trackback&entry_id=59
內容如下:

vim中編輯不同編碼的文件時(shí)需要注意的一些地方
此文講解的是vim編輯多字節編碼文檔(中文)所要了解的一些基礎知識,注意其沒(méi)有涉及gvim,純指字符終端下的vim。
vim編碼方面的基礎知識:

1,存在3個(gè)變量:
encoding----該選項使用于緩沖的文本(你正在編輯的文件),寄存器,Vim 腳本文件等等。你可以把 ‘encoding‘ 選項當作是對 Vim 內部運行機制的設定。
fileencoding----該選項是vim寫(xiě)入文件時(shí)采用的編碼類(lèi)型。
termencoding----該選項代表輸出到客戶(hù)終端(Term)采用的編碼類(lèi)型。
2,此3個(gè)變量的默認值:
encoding----與系統當前l(fā)ocale相同,所以編輯文件的時(shí)候要考慮當前l(fā)ocale,否則要設置的東西就比較多了。
fileencoding----vim打開(kāi)文件時(shí)自動(dòng)辨認其編碼,fileencoding就為辨認的值。為空則保存文件時(shí)采用encoding的編碼,如果沒(méi)有修改encoding,那值就是系統當前l(fā)ocale了。
termencoding----默認空值,也就是輸出到終端不進(jìn)行編碼轉換。

由此可見(jiàn),編輯不同編碼文件需要注意的地方不僅僅是這3個(gè)變量,還有系統當前l(fā)ocale和、文件本身編碼以及自動(dòng)編碼識別、客戶(hù)運行vim的終端所使用的編碼類(lèi)型3個(gè)關(guān)鍵點(diǎn),這3個(gè)關(guān)鍵點(diǎn)影響著(zhù)3個(gè)變量的設定。
如果有人問(wèn):為什么我用vim打開(kāi)中文文檔的時(shí)候出現亂碼?
答案是不確定的,原因上面已經(jīng)講了,不搞清楚這3個(gè)關(guān)鍵點(diǎn)和這3個(gè)變量的設定值,出現亂碼是正常的,倒是不出現亂碼那反倒是湊巧的。

再來(lái)看一下常見(jiàn)情況下這三個(gè)關(guān)鍵點(diǎn)的值以及在這種情況下這3個(gè)變量的值:
1,locale----目前大部分Linux系統已經(jīng)將utf-8作為默認locale了,不過(guò)也有可能不是,例如有些系統使用中文localezh_CN.GB18030。在locale為utf-8的情況下,啟動(dòng)vim后encoding將會(huì )設置為utf-8,這是兼容性最好的方式,因為內部處理使用utf-8的話(huà),無(wú)論外部存儲編碼為何都可以進(jìn)行無(wú)缺損轉換。locale決定了vim內部處理數據的編碼,也就是encoding。
2,文件的編碼以及自動(dòng)編碼識別----這方面牽扯到各種編碼的規則,就不一一細講了。但需要明白的是,文件編碼類(lèi)型并不是保存在文件內的,也就是說(shuō)沒(méi)有任何描述性的字段來(lái)記錄文檔是何種編碼類(lèi)型的。因此我們在編輯文檔的時(shí)候,要么必須知道這文檔保存時(shí)是以什么編碼保存的,要么通過(guò)另外的一些手段來(lái)斷定編碼類(lèi)型,這另外的手段,就是通過(guò)某些編碼的碼表特征來(lái)斷定,例如每個(gè)字符占用的字節數,每個(gè)字符的ascii值是否都大于某個(gè)字段來(lái)斷定這個(gè)文件屬于何種編碼。這種方式vim也使用了,這就是vim的自動(dòng)編碼識別機制了。但這種機制由于編碼各式各樣,不可能每種編碼都有顯著(zhù)的特征來(lái)辨別,所以是不可能100%準確的。對于我們GB2312編碼,由于其中文是使用了2個(gè)acsii值高于127的字符組成漢字字符的,因此不可能把gb2312編碼的文件與latin1編碼區分開(kāi)來(lái),因此自動(dòng)識別編碼的機制對于gb2312是不成功的,它只會(huì )將文件辨識為latin1編碼。此問(wèn)題同樣出現在gbk,big5上等。因此我們在編輯此類(lèi)文檔時(shí),需要手工設定encoding和fileencoding。如果文檔編碼為utf-8時(shí),一般vim都能自動(dòng)識別正確的編碼。

3,客戶(hù)運行vim的終端所使用的編碼類(lèi)型----同第二條一樣,這也是一個(gè)比較難以斷定的關(guān)鍵點(diǎn)。第二個(gè)關(guān)鍵點(diǎn)決定著(zhù)從文件讀取內容和寫(xiě)入內容到文件時(shí)使用的編碼,而此關(guān)鍵點(diǎn)則決定vim輸出內容到終端時(shí)使用的編碼,如果此編碼類(lèi)型和終端認為它收到的數據的編碼類(lèi)型不同,則又會(huì )產(chǎn)生亂碼問(wèn)題。在linux本地X環(huán)境下,一般終端都認為其接收的數據的編碼類(lèi)型和系統locale類(lèi)型相符,因此不需關(guān)心此方面是否存在問(wèn)題。但如果牽涉到遠程終端,例如ssh登錄服務(wù)器,則問(wèn)題就有可能出現了。例如從1臺locale為GB2310的系統(稱(chēng)作客戶(hù)機)ssh到locale為utf-8的系統(稱(chēng)作服務(wù)器)并開(kāi)啟vim編輯文檔,在不加任何改動(dòng)的情況下,服務(wù)器返回的數據為utf-8的,但客戶(hù)機認為服務(wù)器返回的數據是gb2312的,按照gb2312來(lái)解釋數據,則肯定就是亂碼了,這時(shí)就需要設置termencoding為gb2312來(lái)解決這個(gè)問(wèn)題。此問(wèn)題更多出現在我們的windowsdesktop機遠程ssh登錄服務(wù)器的情況下,這里牽扯到不同系統的編碼轉換問(wèn)題。所以又與windows本身以及ssh客戶(hù)端有很大相關(guān)性。在windows下存在兩種編碼類(lèi)型的軟件,一種是本身就為unicode編碼方式編寫(xiě)的軟件,一種是ansi軟件,也就是程序處理數據直接采用字節流,不關(guān)心編碼。前一種程序可以在任何語(yǔ)言的windows上正確顯示多國語(yǔ)言,而后一種則編寫(xiě)在何種語(yǔ)言的系統上則只能在何種語(yǔ)言的系統上顯示正確的文字。對于這兩種類(lèi)型的程序,我們需要區別對待。以ssh客戶(hù)端為例,我們使用的putty是unicode軟件,而secure CRT則是ansi軟件。對于前者,我們要正確處理中文,只要保證vim輸出到終端的編碼為utf-8即可,就是termencoding=utf-8。但對于后者,一方面我們要確認我們的windows系統默認代碼頁(yè)為cp936(中文windows默認值),另一方面要確認vim設置的termencoding=cp936。

最后來(lái)看看處理中文文檔最典型的幾種情況和設置方式:

1,系統locale是utf-8(很多linux系統默認的locale形式),編輯的文檔是GB2312或GBK形式的(Windows記事本默認保存形式,大部分編輯器也默認保存為這個(gè)形式,所以最常見(jiàn)),終端類(lèi)型utf-8(也就是假定客戶(hù)端是putty類(lèi)的unicode軟件)
則vim打開(kāi)文檔后,encoding=utf-8(locale決定的),fileencoding=latin1(自動(dòng)編碼判斷機制不準導致的),termencoding=空(默認無(wú)需轉換term編碼),顯示文件為亂碼。
解決方案1:首先要修正fileencoding為cp936或者euc-cn(二者一樣的,只不過(guò)叫法不同),注意修正的方法不是:setfileencoding=cp936,這只是將文件保存為cp936,正確的方法是重新以cp936的編碼方式加載文件為:edit++enc=cp936,可以簡(jiǎn)寫(xiě)為:e ++enc=cp936。
解決方案2:臨時(shí)改變vim運行的locale環(huán)境,方法是以L(fǎng)ANG=zh_CN vimabc.txt的方式來(lái)啟動(dòng)vim,則此時(shí)encoding=euc-cn(locale決定的),fileencoding=空(此locale下文件編碼自動(dòng)判別功能不啟用,所以fileencoding為文件本身編碼方式不變,也就是euc-cn),termencoding=空(默認值,為空則等于encoding)此時(shí)還是亂碼的,因為我們的ssh終端認為接受的數據為utf-8,但vim發(fā)送數據為euc-cn,所以還是不對。此時(shí)再用命令:set termencoding=utf-8將終端數據輸出為utf-8,則顯示正常。

2,情況與1基本相同,只是使用的ssh軟件為secure CRT類(lèi)ansi類(lèi)軟件。

vim打開(kāi)文檔后,encoding=utf-8(locale決定的),fileencoding=latin1(自動(dòng)編碼判斷機制不準導致的),termencoding=空(默認無(wú)需轉換term編碼),顯示文件為亂碼。

解決方案1:首先要保證運行secure CRT的windows機器的默認代碼頁(yè)為CP936,這一點(diǎn)中文windows已經(jīng)是默認設置了。其他的與上面方案1相同,只是要增加一步,:set termencoding=cp936

解決方案2:與上面方案2類(lèi)似,不過(guò)最后一步修改termencoding省略即可,在此情況下需要的修改最少,只要以locale為zh_CN開(kāi)啟vim,則encoding=euc-cn,fileencoding和termencoding都為空即為encoding的值,是最理想的一種情況。


可見(jiàn)理解這3個(gè)關(guān)鍵點(diǎn)和3個(gè)參數的意義,對于編碼問(wèn)題有很大助力,以后就可以隨心所欲的處理文檔了,同時(shí)不僅僅是應用于vim,在其他需要編碼轉換的環(huán)境里,都可以應用類(lèi)似的思路來(lái)處理問(wèn)題解決問(wèn)題。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
讓vim認識更多的編碼。
vim7.2中文亂碼解決方法
讓VIM徹底告別亂碼
關(guān)于字符集和亂碼的思考
【轉】Vim 字符編碼轉換
VIM 文件編碼識別與亂碼處理
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久