久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

debian下vim編碼問題和亂碼問題

 zhyiwww 2009-05-08
一直以來(lái),經(jīng)常被debian的編碼問題尤其是vim編碼問題影響了工作效率,花了點(diǎn)時(shí)間研究下,茅塞頓開(其實(shí)很多困惑很久的問題認(rèn)真花幾個(gè)小時(shí)甚至更短時(shí)間就可以徹底解決從而大大提高工作效率,但是我們平時(shí)往往習(xí)慣了忍受它們),,發(fā)現(xiàn)完全可以實(shí)現(xiàn)debian中無(wú)亂碼顯示及在vim中編碼自適應(yīng),而且只用很簡(jiǎn)單的配置(最終就是在vimrc中添加4行配置和終端軟件修改1個(gè)配置)而且終身享用(以后基本不用再修改配置),,編碼自適應(yīng)最根本的原理:能自動(dòng)判斷字符的編碼,vim可以做到,但終端軟件如XShell,SecureCRT,putty都做不到 1.系統(tǒng)默認(rèn)編碼:為了和程序包編碼兼容和轉(zhuǎn)換,系統(tǒng)最好用zh_CN.UTF-8,因?yàn)槿我饩幋a可以和utf-8編碼之間實(shí)現(xiàn)無(wú)損轉(zhuǎn)換,安裝debian時(shí)選擇“簡(jiǎn)體中文”,則用系統(tǒng)默認(rèn)編碼即為zh_CN.UTF-8 2.用戶自己的locale編碼:不用設(shè)置,,既采用系統(tǒng)默認(rèn)編碼,,相當(dāng)于locale也是zh_CN.UTF-8 3.終端編碼:用utf-8,建議用XShell把編碼設(shè)置成utf-8(雖然SecureCRT也設(shè)置成utf-8也可以正確顯示,但不能輸入漢字) 4.程序包編碼:很多常見的程序包的輸出都是utf-8編碼,如pdb,git等 5.終端編碼,本地locale編碼,系統(tǒng)默認(rèn)編碼,程序包編碼都是utf-8,這樣就會(huì)保證系統(tǒng)和程序包中的中文都能正確顯示 6.vim編碼自適應(yīng): 也是我們平時(shí)我們接觸最多,遇到編碼總是最多的,,我們最希望解決的問題是: 1).不管文件是什么編碼,用vim打開后能正確顯示和編輯并正確保存 2).新建文件時(shí)可以選擇某種喜愛的編碼 為了解決這些問題,,首先講一下vim編碼原理 1).fileencodeings(fencs):文件可能的存儲(chǔ)編碼集合,賦值例子:set fencs=utf-8,gbk,gb2312,gb18030,cs-bom,cp936,latin1,打開1個(gè)文件時(shí),會(huì)嘗試從前往后用此值的編碼來(lái)解碼,如解碼成功,,說(shuō)認(rèn)為此文件就是此編碼,同時(shí)把fenc設(shè)置成此編碼 2).fileencoding(fenc):文件存儲(chǔ)編碼,賦值例子:set fenc=gbk;打開非空文件時(shí)由通過(guò)fencs猜測(cè)到的編碼來(lái)設(shè)置此值,不可能為空;新建一個(gè)文件時(shí)fenc為空,;保存文件時(shí),如fenc值非空則把enc編碼轉(zhuǎn)換為fenc編碼來(lái)存儲(chǔ),如為空則不進(jìn)行編碼轉(zhuǎn)換,直接用enc編碼來(lái)存儲(chǔ),涉及到轉(zhuǎn)換 3).encoding(enc):vim內(nèi)存中的編碼,賦值例子:set enc=utf-8; 此值默認(rèn)取locale的編碼,如為空則不對(duì)鄰層編碼做處理,讀文件時(shí)vim會(huì)把fenc的編碼轉(zhuǎn)換成enc編碼,寫文件時(shí)vim會(huì)把tenc的編碼轉(zhuǎn)換成enc編碼,涉及到編碼轉(zhuǎn)換 4).termencodeings(tenc):shell終端編碼,賦值例子:set tenc=utf-8,如此值為空對(duì)鄰層傳過(guò)來(lái)來(lái)的編碼為做任何處理,,直接傳給下一層;如非空則顯示文件時(shí)會(huì)把enc編碼轉(zhuǎn)換為tenc編碼,接受輸入時(shí)會(huì)把輸入的編碼轉(zhuǎn)換為tenc,,涉及到編碼轉(zhuǎn)換 5).終端軟件顯示字段的編碼:終端軟件如SecureCRT和XShell,用此編碼來(lái)顯示字符,不進(jìn)行編碼轉(zhuǎn)換,顯然如tenc編碼與此值不一致, 則顯示為亂碼 可見vim編碼的復(fù)雜性,實(shí)際上也很簡(jiǎn)單,類似OSI的網(wǎng)絡(luò)分層模型,自上而下,下層為上層服務(wù),當(dāng)把文件中的字符顯示到終端軟件時(shí),,從1)至5),;當(dāng)把由鍵盤輸入到終端軟件的字符保存到文件時(shí),從5)至2), 某一層的值為空,則不對(duì)由鄰層傳入來(lái)的內(nèi)容做任何處理,也可以理解編碼同鄰層,不為空且和鄰層編碼不同時(shí),,則涉及著編碼轉(zhuǎn)換,另外4)和5)這層必須設(shè)置成一樣的編碼,這兩層之間不涉及到編碼轉(zhuǎn)換 基于此原理,,打開~/.vimrc加上以下行設(shè)置: set fencs=utf-8,gbk,gb2312,gb18030,cs-bom,cp936,latin1 set fenc=gbk #習(xí)慣新建文件是某種編碼則在此寫上此編碼 set enc=utf-8 set tenc=utf-8 另外,XShell編碼設(shè)置成utf-8 #設(shè)置成utf-8是為正確顯示系統(tǒng)和程序包的中文(因?yàn)樗鼈兡J(rèn)是utf-8編碼),但如用SecureCRT把此值設(shè)置成utf-8后,在命令行和vim輸入漢字后就變成了亂碼,這個(gè)應(yīng)該是其bug,XShell就不在在這個(gè)問題 在vim中編輯1個(gè)文件時(shí),,隨時(shí)可以用:set fenc來(lái)修改文件存儲(chǔ)的編碼,非常方便 在vim查看上面4個(gè)值的辦法,:set 變量名,會(huì)顯示完整的變量名=值,如如:set fenc,會(huì)顯示fileencoding=cp936(就是是gbk) 查看某個(gè)文件編碼的方法:用vim打開,,并調(diào)用:set fenc即可 其實(shí)vim編碼自適應(yīng)最關(guān)鍵的一點(diǎn)是在打開文件時(shí)能根據(jù)fencs的值來(lái)自動(dòng)判斷此文件是什么編碼,曾經(jīng)我也想著如果一個(gè)終端軟件能夠做到這一點(diǎn)就好了,,但遺憾的XShell和SecureCRT,putty都不能,,不知道其他的行不行 7.其它文本編輯器能不能編碼自適應(yīng)我沒有研究過(guò) 8.未解決的問題 除了vim的程序的輸出如果編碼與終端軟件編碼不一致,則顯示亂碼,最根本的原因是終端軟件不能自動(dòng)判斷字符的編碼,,如果可以的話,,那么其他一切編碼自適應(yīng)都是多余的,如vim編碼自適應(yīng) 注:此文中vim編碼自適應(yīng)中很多是我個(gè)人理解,,但完全能自圓其說(shuō),,解釋各種各樣的問題,如有爭(zhēng)議歡迎來(lái)討論

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多