解决linux下WINDOWS下记事本乱码问题
2016-05-21 11:25
274 查看
在windows下编辑的记事本或者是其他的文件在linux中的vim,vi或者是cat这些命令下会出现乱码现象,自己深思了一下,对于一个文件乱码的出现无非是,这个文件存储时的编码和显示的编码冲突而导致的,所以我们很明确,在Windows下的普通编辑状态下保存文件的格式为gbk格式的简体中文编码,而linux下的读取编码默认是utf-8所以便出现冲突了
首先提供准备好了的U盘,其中存储了一些windows下编辑的文件
然后进行挂载,进入相关挂载文件,我的用的是ubunt10
用vim进入Mainwin.cpp文件
会发现,只要是中文的部分都乱码了,怎么解决这个问题呢!
这里讲解几个解决方案
第中方法就是完全不用动脑筋的
在命令行中用命令:
你会发现如下如所示,没有乱码了
但是有一个问题就是这个命令是直接输出的
所以大家可以将它写入一个文件
这样大家在用vim Main.cpp打开这个文件编辑就会发现真的没有乱码了
第二种方法也是基本不需要懂什么脑筋的
用vim进入文件后执行:
这个命令是强制以给定的编码格式重新加载文件
接下来就不乱码了
第三种方法需要大家理解一下概念
首先要知道vim encoding(enc),fileencoding(fenc),fileencodings(fencs)是什么
encoding说的是内存中编码,就是程序读取文件会转换为encoding所指向的编码存在内存中
fileencoding则是文件编码
fileencodings所得是识别文件编码
当你打开一个文件时
首先从文件读入数据到内存,然后从fileencodings里依次使用各个编码来尝试转换为encoding。如果有一个成功,直接转换显示,否则就取encoding作为fileencoding。也就是说,这里有一个从fileencoding转换为encoding的过程。
当你保存一个文件
把内存的数据,从encoding,转换为fileencoding,然后写入文件。
所以这里我们也就解释了第二种方法
为什么可以解决乱码问题,就是因为windows下的文件存储时gbk得,但是我们得fileencodings中没有对应的编码进行转换,所以乱码了
其中,我们可以通过
来查看fileencodings列表中已经有哪些编码
我的vim默认的fileencodings编码有如上几种,很显然没有gbk,所以怎么让这个fileencodings中有我们想要转换的编码呢
也许有人会直接说用
,是的,没错,这样是直接设置了fileencodings但是对不起,你设置的是加载后的,对已经加载的没有丁点影响,所以要怎么办呢
直接用一下代码就可以了
就可以了
首先提供准备好了的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
就可以了
相关文章推荐
- linux下man命令的使用
- 9、Linux驱动的杂项设备
- linux内存,free命令介绍
- cmake使用笔记和Creating CMake Linux projects with Visual Studio
- 15 条实用 Linux/Unix 磁带管理命令
- 解决Manjaro linux的中文输入
- 全面解析Linux 内核 3.10.x - 内存管理 - 伙伴系统算法(Buddy System)
- Linux startx命令错误:
- linux学习计划第一周
- Python脚本完美解决Linux环境解压.zip文件乱码问题
- Centos7 安装codeblock( 转载)
- linux下集成开发环境之ECLIPSE--在线调试、编译程序
- 截取linux文件存储路径方法
- 每天一个linux命令(1):ls命令
- CRT 控制台的调整设置
- linux文件压缩与打包之tar命令
- linux 多网卡路由问题
- gcc arm-linux-gcc编译优化
- Linux实践四:ELF文件格式分析
- Linux 下十大命令行下载工具