不同編輯器如何顯示文字猜想 35

2021-09-02 08:46:03 字數 912 閱讀 5440

編輯器,究竟是如何分割乙個檔案內容和顯示他們呢?,win,unix下分別是如何顯示的?

假設abcd,他們在記憶體中不過是4個位元組的儲存空間,那麼文字編輯器(txt,vim等)是如何解析呢,按照每個位元組乙個字元,還是2個位元組乙個字元呢?

1 我的理解是:

<1>. 乙個編輯軟體,必須首先找到一種編碼格式,比如說根據系統的設定,比如說linux中對語言的設定等,找到乙個可能的編碼,或者根據軟體的配置,找到一種合適的編碼,比如vim,可以自己set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,設定各種編碼,當我們用vim開啟一種檔案時候,他會做各種嘗試,比如先用ascii,再用utf-8,嘗試著去解析檔案,看是否所有檔案內容都可以按照該編碼完全解析,如果可以,就這樣顯示, 如果不可以就換外一種編碼嘗試; 具體的讀取方法可能是一次讀取1,2,3,4個位元組來嘗試,或許這就是開啟乙個較大的檔案比較慢的原因;

<2>. 對於win下的文字編輯器,當我們開啟乙個檔案時,他會預設用自己設定的編碼來解析,如果出錯了,我們可以手動切換編碼,再用該編碼來解析整個檔案;

<3>. 所有檔案在磁碟上的儲存都是,0,1,0,1這樣來儲存的,當我們要解析的時候必須指定一種編碼再解析, 對於二進位制檔案,基本上會顯示亂碼,但也不一一定,除非碰巧可以用一種編碼解析;

<4>. 二進位制和非二進位制的區別就是,非二進位制檔案是有格式的無長度,二進位制只有長度無格式,

<5>. 反過來,當我們向文字編輯器裡面寫入文字的時候,我們寫入的是一種編碼對應的值,例如utf-8(或者ascii,兩者127以內相容)下,我們寫入1,其實是我們寫入了ascii的1,意思就是我們寫入的是字元1,那麼我們寫入的真正的被計算機運算處理的是: 字元1對應的值,是0x31;

2. 當然不單單是文字編輯器了,我們整個系統都需要一套編碼,例如在xshell中也需要設定自己的編碼;

文字編輯器

include stdio.h include string.h include stdlib.h define len sizeof struct linetable struct linetable main 輸出並加入行號 display struct linetable head else ...

文字編輯器

text editer文字編輯器 data ref container tec type ref to cl gui custom container.data ref edit type ref to cl gui textedit.data text line 85 work area it t...

文字編輯器

uedit notepad mybase 筆記類工具 sublime 列模式操作很牛叉 sublime 快捷鍵 常用類操作模式 1.選擇編輯的行,ctrl l,就可以操作了。2.按住shiftr 鍵盤,滑鼠右鍵選擇欲選擇內容。ctrl l 選擇整行 按住 繼續選擇下行 ctrl kk 從游標處刪除至...