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 相关文章推荐
在apache下限制每个虚拟主机的并发数!!!!
Oct 09 PHP
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
php网页后退不再出现过期
Mar 08 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
php微信开发自定义菜单
Aug 27 PHP
php版微信自定义回复功能示例
Dec 05 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 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 Mssql操作简单封装支持存储过程
2009/12/11 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
jquery对ajax的支持介绍
2013/12/10 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
Python新手学习函数默认参数设置
2020/06/03 Python
python相对企业语言优势在哪
2020/06/12 Python
python如何变换环境
2020/07/21 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
捷克汽车配件和工具销售网站:TorriaCars
2018/02/26 全球购物
老师对学生的寄语
2014/04/09 职场文书
经理任命书模板
2014/06/06 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
公司2014年度工作总结
2014/12/10 职场文书
保险公司2016开门红口号集锦
2015/12/24 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
Elasticsearch 基本查询和组合查询
2022/04/19 Python