首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Windows GVim 編輯 PHP 中文亂碼完整解決方案

     編輯:PHP 綜合知識

問題現象

使用 GVim 編輯 PHP 檔案,瀏覽器顯示中文亂碼;改用記事本存檔則正常。確認瀏覽器編碼設定無誤後,鎖定為 GVim 檔案編碼設定問題。

根本原因

  • PHP 檔案儲存編碼 (fileencoding) 與瀏覽器預期編碼 (HTTP Header Content-Type: charset=... 或 HTML <meta charset>) 不一致。
  • GVim 內部編碼 (encoding)、檔案偵測編碼列表 (fileencodings) 設定錯誤,導致存檔時轉碼錯誤。

關鍵設定說明

選項作用建議值
encodingVim 內部緩衝區編碼 (記憶體中字串表示)utf-8 (通用、支援所有字元)
fileencoding當前檔案**存檔**時使用的編碼utf-8 (現代 Web 標準)
fileencodings開啟檔案時**偵測**編碼的優先順序列表ucs-bom,utf-8,cp936,gbk,big5,latin1
termencoding終端機輸出編碼 (Console 模式相關)utf-8 或同系統預設

修正後的 _vimrc 關鍵段落

" 基本編碼設定
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936,gbk,big5,latin1
set termencoding=utf-8

" 避免預設存成 cp936 (chinese)
" set fileencoding=chinese   " 刪除或註解此行
" set fileencodings=chinese  " 刪除或註解此行

" 選單/訊息中文化 (可選)
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_TW.utf-8

" 字型設定 (需支援中文)
set guifont=Microsoft_JhengHei:h12:cDEFAULT
" 或 set guifont=Consolas:h12:cDEFAULT (英文) + 依靠字型回退顯示中文

" 語法高亮
syntax enable
syntax on

PHP 檔案端對應設定

<?php
// 1. 腳本最開頭宣告編碼 (PHP 5.6+ 內建 UTF-8 預設,但明確宣告無害)
declare(encoding='UTF-8');

// 2. 輸出 HTTP Header 告知瀏覽器編碼 (必須在任何輸出前)
header('Content-Type: text/html; charset=UTF-8');

// 3. 資料庫連線編碼
$pdo = new PDO($dsn, $user, $pass, [
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4'
]);
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
...

驗證步驟

  1. GVim 開啟檔案 → :set fileencoding? 確認顯示 utf-8。
  2. 存檔 → 瀏覽器開啟 → F12 Network 檢查 Response Header Content-Type: text/html; charset=UTF-8。
  3. 瀏覽器檢視原始碼 → 確認中文正常顯示。

常見誤區

  • 誤以為 set fileencoding=chinese 就是中文支援:chinese 是 cp936 (GBK) 別名,現代 Web 應統一 UTF-8。
  • 只改 GVim 不改 PHP Header:檔案儲存為 UTF-8,但 HTTP Header 仍送 charset=gbk,瀏覽器以 GBK 解碼 UTF-8 位元組 → 亂碼。
  • BOM (Byte Order Mark) 干擾:fileencodings 最前放 ucs-bom 可自動偵測並移除 BOM;PHP 檔案**不應**有 BOM (會導致 header() 失效、輸出空白)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved