解决Mac环境下vim中文乱码&转码问题

【问题背景】:

    Mac环境。

    我的CSV文件在导入MySQL时,错误提示显示说文件编码格式不正确。需要将CSV文件编码格式转为utf-8。

    希望使用:set fileencoding=utf-8转换文件编码格式

    然而发现一个问题,在使用vim打开后,发现中文乱码。

    所以又需要解决中文乱码问题。


【解决方法】:

1.解决中文乱码问题。配置 ~/.vimrc文件。在文件最后添加如下内容:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8


配置完成后,为了尽快生效,可以执行:source ~/.vimrc 命令。


2.解决编码问题

使用vim打开文件,:set fileencoding 查看编码格式。发现我的文件是Latin1,我需要的是utf-8。

所以使用:set fileencoding=utf-8 进行编码转换。

保存。生效。


【参考内容如下】:

1.http://bbs.feng.com/read-htm-tid-5204299.html

查看文件编码可以通过以下几种方式:
1.在Vim中可以直接查看文件编码
:set fileencoding
即可显示文件编码格式。
如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在
~/.vimrc 文件中添加以下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
2. enca (如果你的系统中没有安装这个命令,可以用sudo yum install -y enca 安装 )查看文件编码
$ enca filename
filename: Universal transformation format 8 bits; UTF-8
CRLF line terminators
需要说明一点的是,enca对某些GBK编码的文件识别的不是很好,识别时会出现:
Unrecognized encoding
文件编码转换
1.在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
:set fileencoding=utf-8
2. enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下
enconv -L zh_CN -x UTF-8 filename(这个命令对windows的ANSI编码非常有效)。
3. iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个UTF-8 编码的文件转换成GBK编码
iconv -f GBK -t UTF-8 file1 -o file2


2.http://blog.sina.com.cn/s/blog_7253e3930102vpqf.html

在  
 vi ~/.vimrc  
 添加一下内容 

#设置编码

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

#设置不生产临时文件
set nobackup
set noswapfile

set confirm

保存
:wq

最后执行

source ~/.vimrc

即可!

vi  ~/.vimrc
粘贴一下内容:

"编码问题
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8


"把当前行的对起格式应用到下一行
set autoindent
"将换行自动缩进设置成4个空格;
set shiftwidth=4
"表示一个tab键相当于4个空格键
set tabstop=4
"自动填充4个空格为tab 
set expandtab

"显示行号
set nu

"粘贴不缩进的方法:set paste-
set paste
"从不备份- 
set nobackup
"禁止生成临时文件
set noswapfile

"确认VI
set confirm

"显 示 TAB 键
set list
"TAB会被显示成 ">---" ("-" 的个数不定) 而行尾多余的空白字符显示成 "-" 
set listchars=tab:>-,trail:-




你可能感兴趣的:(Shell,Linux)