Windows下利用Gvim寫PHP產生中文亂碼問題解決方案

來源:互聯網
上載者:User

首先:找出亂碼產生的原因。 一直以為是瀏覽器的原因,結果我在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,中文亂碼問題解決了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.