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的控制语句
Oct 09 PHP
PHP 截取字符串专题集合
Aug 19 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
PHP和.net中des加解密的实现方法
Feb 27 PHP
php实现下载限制速度示例分享
Feb 13 PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
php实现用户登陆简单实例
Apr 04 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
PHP并发场景的三种解决方案代码实例
Feb 27 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中改变图片的尺寸大小的代码
2011/07/17 PHP
php导出word格式数据的代码实例
2013/11/25 PHP
微信支付开发交易通知实例
2016/07/12 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
小程序实现tab标签页
2020/11/16 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
python实现爬虫下载美女图片
2015/07/14 Python
python生成随机图形验证码详解
2017/11/08 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
Yahoo-PHP面试题2
2014/12/06 面试题
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
《走一步再走一步》教学反思
2014/02/15 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android