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 相关文章推荐
增加反向链接的101个方法 站长推荐
Jan 31 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
Mar 28 PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 PHP
php实现遍历目录并删除指定文件中指定内容
Jan 21 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
php检查页面是否被百度收录
Oct 28 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
Mar 28 PHP
php中curl和soap方式请求服务超时问题的解决
Jun 11 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 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
php获取英文姓名首字母的方法
2015/07/13 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
Python基于当前时间批量创建文件
2020/05/07 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
python3处理word文档实例分析
2020/12/01 Python
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
如何转换一个字符串到enum值
2014/04/12 面试题
汽车工程专业应届生求职信
2013/10/19 职场文书
大学生创业感言
2014/01/25 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
食品安全处置方案
2014/06/14 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
运动会主持词大全
2015/07/02 职场文书