初學 PHP 的開發者常會遇到一個令人頭痛的問題:網頁顯示中文亂碼,每次除錯都得手動切換瀏覽器編碼,非常麻煩。其實只要在 PHP 程式碼最前面加入一行 header() 宣告,就能讓瀏覽器自動識別 UTF-8 編碼,徹底解決亂碼困擾。
在輸出任何內容之前,加入以下標頭宣告:
header("Content-type: text/html; charset=utf-8");
範例程式碼:
<?php
header("Content-type: text/html; charset=utf-8");
echo '我是初學者';
?>
這行 header 必須在任何輸出之前執行。 意思是:
echo、print 等輸出語句<?php 前面也不能有空行或 BOM 簽名若在 header 之前已有輸出,PHP 會拋出 Cannot modify header information - headers already sent 警告,導致編碼宣告失效。
除了單一檔案設定,更推薦在 php.ini 中設定預設編碼:
default_charset = "UTF-8"
或在 Apache/Nginx 設定檔加入 AddDefaultCharset utf-8,從伺服器層面統一處理,避免遺漏。
許多初學者以為資料庫編碼設定為 UTF-8 就萬事大吉,實際上「PHP 輸出編碼」「資料庫連線編碼」「HTML meta 標籤」三者必須一致,才能完整解決中文亂碼問題。