歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 解決linux下WINDOWS下記事本亂碼問題

解決linux下WINDOWS下記事本亂碼問題

日期:2017/3/3 12:33:20   编辑:Linux技術

在windows下編輯的記事本或者是其他的文件在linux中的vim,vi或者是cat這些命令下會出現亂碼現象,自己深思了一下,對於一個文件亂碼的出現無非是,這個文件存儲時的編碼和顯示的編碼沖突而導致的,所以我們很明確,在Windows下的普通編輯狀態下保存文件的格式為gbk格式的簡體中文編碼,而linux下的讀取編碼默認是utf-8所以便出現沖突了

首先提供准備好了的U盤,其中存儲了一些windows下編輯的文件

然後進行掛載,進入相關掛載文件,我的用的是ubunt10

用vim進入Mainwin.cpp文件

會發現,只要是中文的部分都亂碼了,怎麼解決這個問題呢!

這裡講解幾個解決方案

第中方法就是完全不用動腦筋的

在命令行中用命令:

iconv -f gbk -t uft-8 Mainwin.cpp
你會發現如下如所示,沒有亂碼了

但是有一個問題就是這個命令是直接輸出的

所以大家可以將它寫入一個文件

iconv -f gbk -t utf-8 Mainwin.cpp > Main.cpp
這樣大家在用vim Main.cpp打開這個文件編輯就會發現真的沒有亂碼了

第二種方法也是基本不需要懂什麼腦筋的

用vim進入文件後執行:

:e ++env=gbk

這個命令是強制以給定的編碼格式重新加載文件

接下來就不亂碼了

第三種方法需要大家理解一下概念

首先要知道vim encoding(enc),fileencoding(fenc),fileencodings(fencs)是什麼

encoding說的是內存中編碼,就是程序讀取文件會轉換為encoding所指向的編碼存在內存中

fileencoding則是文件編碼

fileencodings所得是識別文件編碼

當你打開一個文件時

首先從文件讀入數據到內存,然後從fileencodings裡依次使用各個編碼來嘗試轉換為encoding。如果有一個成功,直接轉換顯示,否則就取encoding作為fileencoding。也就是說,這裡有一個從fileencoding轉換為encoding的過程。

當你保存一個文件

把內存的數據,從encoding,轉換為fileencoding,然後寫入文件。

所以這裡我們也就解釋了第二種方法

:e ++enc=gbk
為什麼可以解決亂碼問題,就是因為windows下的文件存儲時gbk得,但是我們得fileencodings中沒有對應的編碼進行轉換,所以亂碼了

其中,我們可以通過

:set fencs
來查看fileencodings列表中已經有哪些編碼

我的vim默認的fileencodings編碼有如上幾種,很顯然沒有gbk,所以怎麼讓這個fileencodings中有我們想要轉換的編碼呢

也許有人會直接說用

:set fencs=gbk,utf-8
,是的,沒錯,這樣是直接設置了fileencodings但是對不起,你設置的是加載後的,對已經加載的沒有丁點影響,所以要怎麼辦呢

直接用一下代碼就可以了

touch ~/.vimrc
vim ~/.vimrc
set fencs=gbk,utf-8
就可以了

Copyright © Linux教程網 All Rights Reserved