解决linux下WINDOWS下记事本乱码问题

在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



就可以了


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值