亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Vim中文件編碼處理與重新打開亂碼文件詳解

2024-09-01 13:54:39
字體:
來源:轉載
供稿:網友

前言

Vim 中有兩個與編碼有關的變量,如果理解了基本就不會再為編碼問題頭疼了。

  • encoding  :Vim 內部編碼,例如 buffer、寄存器、文本等。這個值一般用戶不要設置,另外打開 Vim 之后再設置這個值也是沒有意義的。大家可以將這個值看作是 Vim 程序自己的變量,如果在工作中遇到文件的編碼問題,和 encoding  這個變量是萬萬沒有關系的。
  • fileencoding  :顧名思義了,就是文件的編碼。

此外還有一個值,叫 fileencodings 是個復數。一般我們將這個值在 vimrc 中設置,Vim 打開一個文件的時候回根據 fileencodings 里面設置的順序來猜測文件的編碼。比如這樣設置:

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

那么有時候 Vim 猜錯了,打開的文件顯示亂碼怎么辦呢?(ps:通常 Vim 打開文件的時候亂碼是因為你的 fileencodings 里面沒有寫某個編碼,所以 Vim 沒有猜對。例如從上面的設置中刪掉 gb18030 ,那么打開這種編碼的文件的時候你會發現 fileencoding 的值是 latin1 ,而文件的顯示是亂碼)

這時候你可能想到設置 fileencoding 的值,但是此時我們的文件已經打開了,你設置后會發現 Vim buffer 的狀態變成了 Edited 。而文件依然顯示亂碼,沒有變化。具體的原因后文會詳細解釋。

正確的做法是 以特定編碼重新打開文件 ,例如在 Vim 中使用重新打開命令 :e ++enc=gb2312 ,其中 ++enc 是一個選項,可以指定使用的編碼。打開后你會發現 Vim 按照你指定的形式打開了文件,但是文件變成了 readonly 狀態,如果要修改,設置 :set noreadonly 就好。

其實原理有點像 Python 里面有人提出的 三明治模型 :

vim,打開文件亂碼,打開亂碼,打開文件,編碼

Python 在從流(例如網絡, 文件 I/O 的時候),拿到的是 bytes ,通過 decode() 變成 str 而 Vim 在讀入一個文件的時候,根據 fileencoding (用戶設置的或者通過 fileencodings 猜測,將其轉換成內部  encoding 的編碼方式。

Python 在寫入文件的時候,用 encode() 變成 bytes 再寫。而 Vim 從 buffer 寫到文件的時候,也是將數據從內部的 encoding 轉換成 fileencoding 再寫入。

這也就解釋了為什么亂碼的時候在 Vim 中修改 fileencoding 沒什么卵用。

因為在打開文件之后設置 fileencoding 的值不會改變已經載入到 Vim buffer 中的數據,此時的數據已經是轉換完成了的,這個設置只會改變寫入的時候使用目前的 fileencoding 來寫入,所以總結起來就是“打開文件使用了一個編碼,寫入文件的時候使用了另一個編碼”。

而對亂碼正確的需求應該是:我想要以特定的編碼形式打開這個文件。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。

參考:

  • help :edit
  • help fileencoding
  • help ++enc
  • VIM 文件編碼識別與亂碼處理

注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久av.com| 日韩美女免费线视频| 日韩二区三区在线| 精品亚洲aⅴ在线观看| 日本一区二区在线免费播放| 国产99视频精品免视看7| 色偷偷91综合久久噜噜| 色婷婷久久av| 国产精品久久久久久久久久尿| 亚洲精品国产综合区久久久久久久| 中文字幕日韩精品在线观看| 成年无码av片在线| 日韩亚洲欧美中文高清在线| 国产日韩综合一区二区性色av| 羞羞色国产精品| 欧美自拍视频在线观看| 91免费的视频在线播放| 国产精品普通话| 成人福利免费观看| 亚洲国产免费av| 久久久精品免费视频| 亚洲mm色国产网站| 成人精品久久一区二区三区| 三级精品视频久久久久| 国产精品久久在线观看| 欧美性猛交视频| 成人中文字幕+乱码+中文字幕| 日韩欧美中文第一页| 国产精品吹潮在线观看| 久热国产精品视频| 色婷婷亚洲mv天堂mv在影片| 精品人伦一区二区三区蜜桃网站| 欧美日韩一区二区三区在线免费观看| 亚洲乱码一区av黑人高潮| 136fldh精品导航福利| 成人h视频在线观看播放| 成人激情春色网| 亚洲精品中文字| 日韩国产高清视频在线| 亚洲精品一区二区久| 久久伊人精品一区二区三区| 美女少妇精品视频| 国产一区二区日韩精品欧美精品| 色综合91久久精品中文字幕| 性欧美长视频免费观看不卡| 最新中文字幕亚洲| 成人在线精品视频| 超碰97人人做人人爱少妇| 亚洲男人的天堂在线| 91精品国产91久久久久久久久| 精品亚洲aⅴ在线观看| 777国产偷窥盗摄精品视频| 国产精品热视频| 国产精品福利久久久| 国产精品入口免费视频一| 亚洲福利在线视频| 国产精品网红直播| 久久全球大尺度高清视频| 日韩乱码在线视频| 欧美午夜片欧美片在线观看| 红桃av永久久久| 欧美天天综合色影久久精品| 亚洲精品videossex少妇| 欧美在线激情视频| 97国产在线视频| 国产精品99久久久久久久久久久久| 68精品久久久久久欧美| 欧美激情在线视频二区| 国产精品毛片a∨一区二区三区|国| 成人在线观看视频网站| 亚洲第一精品电影| 精品国产一区av| 欧美性一区二区三区| 亚洲a在线观看| 日韩欧美国产骚| 欧美大尺度电影在线观看| 中文字幕在线看视频国产欧美在线看完整| 国产视频精品免费播放| 欧美激情免费看| 亚洲高清一二三区| 亚洲精品久久久久中文字幕二区| 精品国产一区二区三区久久久狼| 久久久久这里只有精品| 欧美成年人视频网站| 亚洲成人久久久| 日韩精品中文字幕久久臀| 隔壁老王国产在线精品| 久久久久女教师免费一区| 欧美性猛交xxxxx水多| 97热在线精品视频在线观看| 浅井舞香一区二区| 国产精品v日韩精品| 久久99精品久久久久久青青91| 亚洲欧洲偷拍精品| 91国产精品91| 欧美高清在线视频观看不卡| 久久久久久中文字幕| 亚洲自拍偷拍视频| 成人免费xxxxx在线观看| 欧美一级电影久久| 欧美成人免费大片| 亚洲国产古装精品网站| 国产精品自产拍高潮在线观看| 亚洲曰本av电影| 国产国语videosex另类| 全亚洲最色的网站在线观看| 亚洲精品在线视频| 日本电影亚洲天堂| 成人黄色免费看| 欧美老少做受xxxx高潮| 欧美一级成年大片在线观看| 国产一区二区日韩| 精品人伦一区二区三区蜜桃网站| 亚洲www视频| 久久久999国产| 九九精品视频在线观看| 亚洲精品福利在线观看| 国产一区视频在线| 久久精品国产成人精品| 日韩电影在线观看中文字幕| 久青草国产97香蕉在线视频| 亚洲成avwww人| 国产综合福利在线| 国产成人久久精品| 欧美极品少妇xxxxⅹ喷水| 成人福利在线视频| 蜜臀久久99精品久久久无需会员| 全色精品综合影院| 国产欧美一区二区三区在线| 久久亚洲一区二区三区四区五区高| 综合激情国产一区| 国产精品黄页免费高清在线观看| 欧美成人精品在线观看| 亚洲精选一区二区| 国产精品亚洲一区二区三区| 亚洲美女性生活视频| 亚洲第一视频网站| 国产欧美日韩免费| 最新国产精品亚洲| 91精品国产自产在线| 亚洲欧美国产精品久久久久久久| 亚洲大胆人体av| 一区二区在线视频| 日韩av电影在线播放| 精品一区二区三区四区在线| 精品无码久久久久久国产| 亚洲二区在线播放视频| 欧美孕妇性xx| 精品成人av一区| 国产aaa精品| 久久影视电视剧免费网站清宫辞电视| 欧美洲成人男女午夜视频| 国产不卡av在线免费观看| 久久精品小视频| 92看片淫黄大片看国产片| 91国自产精品中文字幕亚洲| 精品人伦一区二区三区蜜桃免费| 国产精品高潮呻吟视频| 欧美性高潮床叫视频| 亚洲精品国产精品国自产在线| 色在人av网站天堂精品| 欧美老女人xx| 亚洲综合大片69999| 久久影视电视剧免费网站清宫辞电视|