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 相关文章推荐
PHP4引用文件语句的对比
Oct 09 PHP
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
PHP获取类中常量,属性,及方法列表的方法
Apr 09 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
php常用表单验证类用法实例
Jun 18 PHP
Symfony2函数用法实例分析
Mar 18 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
Dec 12 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
Vue实现验证码功能
2019/12/03 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python正则表达式使用范例分享
2016/12/04 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
python assert的用处示例详解
2019/04/01 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
python如何实现单链表的反转
2020/02/10 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
某科技软件测试面试题
2013/05/19 面试题
应届本科生推荐信范文
2013/12/25 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
德能勤绩工作总结
2015/08/11 职场文书
《司马光》教学反思
2016/02/22 职场文书