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 相关文章推荐
杏林同学录(九)
Oct 09 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
PHP 遍历文件实现代码
May 04 PHP
PHP与C#分别格式化文件大小的代码
May 14 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
May 15 PHP
php+highchats生成动态统计图
May 21 PHP
php session的锁和并发
Jan 22 PHP
php图片合成方法(多张图片合成一张)
Nov 25 PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
PHP simplexml_load_file()函数讲解
Feb 03 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
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
php中iconv函数使用方法
2008/05/24 PHP
Laravel 5 学习笔记
2015/03/06 PHP
php实现网页端验证码功能
2017/07/11 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
js控制框架刷新
2008/08/01 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
python基础教程之面向对象的一些概念
2014/08/29 Python
python生成IP段的方法
2015/07/07 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
出纳员岗位职责
2014/03/13 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python