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

PHP 統一頁面編碼避免亂碼完整指南

     編輯:PHP 綜合知識

亂碼問題核心在於編碼不一致。必須確保四者編碼完全一致:

  1. MySQL 資料庫/資料表/欄位編碼
  2. HTML 頁面輸出編碼(<meta charset>)
  3. PHP/HTML 檔案儲存編碼
  4. 資料庫連線編碼

1. MySQL 資料庫編碼

建庫時指定編碼(如 utf8mb4_unicode_ci 或 gbk_chinese_ci),建表、建欄位、插入資料時不要單獨指定編碼,讓其自動繼承資料庫編碼。連線時執行:

mysql_query('SET NAMES utf8'); // 或 gbk,依實際編碼而定

2. HTML 頁面編碼宣告

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta charset="utf-8">

3. PHP/HTML 檔案儲存編碼

使用 EditPlus、VS Code、PhpStorm 等編輯器另存新檔時選擇對應編碼:

  • 資料庫/頁面為 gbk → 檔案存為 ANSI(Windows 下 ANSI 即 GBK)
  • 資料庫/頁面為 utf-8 → 檔案存為 UTF-8 無 BOM

4. JavaScript/Flash 傳遞資料編碼處理

JS/Flash 傳遞資料通常為 UTF-8。若後端為 GBK,需轉碼後寫入資料庫:

iconv('utf-8', 'gbk', $content);

5. PHP 程式內指定輸出編碼

<?php
header('Content-type: text/html; charset=utf-8');
// 必須在任何輸出前呼叫
?>

header() vs meta 標籤差異

特性header()meta 標籤
運作層級HTTP 回應標頭HTML 文件內容
優先權較高(瀏覽器優先參考)較低
功能範圍可設定快取、重導向、Cookie 等僅宣告字元編碼
適用場景API、非 HTML 輸出、需精確控制一般 HTML 頁面

最佳實踐:同時使用 header()(PHP 程式最前端)與 <meta charset>(HTML head 區塊)雙重保險,並確保檔案儲存編碼一致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved