Windows下利用Gvim写PHP产生中文乱码问题解决方法
Windows下利用Gvim写PHP产生中文乱码问题解决方法
发布时间:2016-12-29 来源:查字典编辑
摘要:首先:找出乱码产生的原因。一直以为是浏览器的原因,结果我在chrome,firefox,IE9里面都出现了乱码,所以浏览器的因素可以排除。为...

首先:找出乱码产生的原因。 一直以为是浏览器的原因,结果我在chrome,firefox,IE9里面都出现了乱码,所以浏览器的因素可以排除。为了验证我猜测是Gvim的原因,

我用记事本(note)简单写了一个php文件

复制代码 代码如下:

<?php

echo "你好";

echo "世界";

?>

结果没有出现乱码,所以问题就出在Gvim上,这个结论水到渠成。

于是,开始研究Gvim的配置文件(_vimrc), 现在给大家看一下我产生乱码之前的配置(注:我之前修改过):

复制代码 代码如下:

set nocompatible

source $VIMRUNTIME/vimrc_example.vim

source $VIMRUNTIME/mswin.vim

behave mswin

set diffexpr=MyDiff()

function MyDiff()

let opt = '-a --binary '

if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif

if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif

let arg1 = v:fname_in

if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif

let arg2 = v:fname_new

if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif

let arg3 = v:fname_out

if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif

let eq = ''

if $VIMRUNTIME =~ ' '

if &sh =~ '<cmd'

let cmd = '""' . $VIMRUNTIME . 'diff"'

let eq = '"'

else

let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . 'diff"'

endif

else

let cmd = $VIMRUNTIME . 'diff'

endif

silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq

endfunction

"设置默认背景色

colors desert

"设置不自动备份

set nobackup

"设置默认字体和大小

set guifont=Courier_New:h12:cANSI

set termencoding=gbk

set encoding=utf-8

"产生问题的原因

set fileencoding=chinese

set fileencodings=ucs-bom,utf-8,chinese

set langmenu=zh_CN.utf-8

source $VIMRUNTIME/delmenu.vim

source $VIMRUNTIME/menu.vim

language messages zh_cn.utf-8

language messages zh_cn.utf-8

syntax enable

syntax on

这里需要说明一下:配置文件里enconding,fileeconding,fileecondings的含义:

encoding: GVim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。

用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在 .vimrc 中改变它的值才有意义。

fileencoding: GVim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。

fileencodings: GVim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。

因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。

其中:chinese 就是 cp963编码

只到这里我突然想起来,我的浏览里默认的字符集是 GBK的,而_vimrc里的设置编码是utf-8的,二者不对应,

复制代码 代码如下:

colors desert

set nobackup

set guifont=Courier_New:h12:cANSI

"处理文本中显示乱码

set encoding=utf-8

set fileencodings=chinese

set fileencoding=chinese

"处理菜单及右键菜单乱码

source $VIMRUNTIME/delmenu.vim

source $VIMRUNTIME/menu.vim

"处理consle输出乱码

language messages zh_CN.utf-8

syntax enable

syntax on

修改完成之后,重新启动Gvim,中文乱码问题解决了。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类