国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - Vim中文件編碼處理與重新打開亂碼文件詳解

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

2022-03-08 17:21卡瓦邦噶! Linux

這篇文章主要給大家介紹了關于Vim中文件編碼處理與重新打開亂碼文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

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

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

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

?
1
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 來寫入,所以總結起來就是“打開文件使用了一個編碼,寫入文件的時候使用了另一個編碼”。

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

總結

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

參考:

原文鏈接:https://www.kawabangga.com/posts/2851

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品久久久久久久久久三级 | 日韩中文字幕视频在线 | 午夜寂寞少妇aaa片毛片 | 日韩在线播放一区二区三区 | 在线精品国产一区二区三区 | 精品国产乱码久久久久久牛牛 | 中文字幕电影在线 | 亚洲一区二区免费视频 | 亚洲日本va中文字幕 | 亚洲精品一二三区 | 日本久久香蕉 | 国产大学生援交视频在线观看 | 色678黄网站全部免费 | 伊人网在线视频免费观看 | 韩国一区二区视频 | 久久天天| 四虎影视在线播放 | 久久99国产精品 | 国产精品欧美一区二区三区 | 天天综合久久 | 久久精品中文视频 | 亚洲综合欧美日韩 | 欧美狠狠操 | 6080yy午夜一二三区久久 | 国产精品videosex极品 | 欧美日视频 | 91av国产视频 | 日韩精品一区二区三区免费视频 | 亚洲精品一 | 久久久久av69精品 | av中文字幕在线 | 国产 日韩 欧美 中文 在线播放 | √天堂8在线网 | 亚洲成人精品在线 | 懂色一区二区三区av片 | 亚洲欧美视频在线播放 | 国产玖玖视频 | 日韩精品一区二区三区视频播放 | 国产在线中文字幕 | 精品自拍视频在线观看 | 中文字幕精品一区二区精品 |