• 技术文章 >php教程 >php手册

    Windows下利用Gvim写PHP产生中文乱码问题解决方法

    2016-06-13 12:10:46原创292
    首先:找出乱码产生的原因。 一直以为是浏览器的原因,结果我在chrome,firefox,IE9里面都出现了乱码,所以浏览器的因素可以排除。为了验证我猜测是Gvim的原因,
    我用记事本(note)简单写了一个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 =~ '\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,中文乱码问题解决了。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:zend api扩展的php对象的autoload工具 下一篇:PHP基础学习小结
    Web大前端开发直播班

    相关文章推荐

    • PHP中字符安全过滤函数使用总结• PH获取当前url路径及服务器路径汇总 (url 获取当前路径 服务器路径),ph当前路径• php格式化金额函数分享,php金额函数• php判断当前用户已在别处登录的方法,当前用户在别处• php针对cookie操作的队列操作类实例,cookie队列

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网