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


Posted in PHP onApril 20, 2011

首先:找出乱码产生的原因。 一直以为是浏览器的原因,结果我在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 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
通达OA公共代码 php常用检测函数
Dec 14 PHP
PHP正则表达式之定界符和原子介绍
Oct 05 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 PHP
详解PHP中strlen和mb_strlen函数的区别
Mar 07 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php计算数组相同值出现次数的代码(array_count_values)
Jan 20 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
php实现的Curl封装类Curl.class.php用法实例分析
Sep 25 PHP
Zend Framework常用校验器详解
Dec 09 PHP
DWZ+ThinkPHP开发时遇到的问题分析
Dec 12 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 #PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
Apr 20 #PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 #PHP
关于session在PHP5的配置文件中的详细设置参数说明
Apr 20 #PHP
PHP session有效期session.gc_maxlifetime
Apr 20 #PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 #PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 #PHP
You might like
在JavaScript中调用php程序
2009/03/09 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
2016/04/20 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
javascript实现Emrips反质数枚举的示例代码
2017/12/06 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
python 产生token及token验证的方法
2018/12/26 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
保密承诺书
2014/03/27 职场文书
公司经理聘任书
2014/03/29 职场文书
冰峪沟导游词
2015/02/09 职场文书
庆祝教师节主持词
2015/07/06 职场文书
python3中apply函数和lambda函数的使用详解
2022/02/28 Python
Python使用MapReduce进行简单的销售统计
2022/04/22 Python