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

PHP 頁面標題中文亂碼徹底解決:編碼聲明、文件保存、HTTP 頭三重保障

     編輯:PHP 相關知識

亂碼產生的三個環節

  1. 文件編碼:編輯器保存編碼 ≠ 聲明編碼。
  2. HTTP 響應頭:Content-Type 未指定 charset 或與實際不符。
  3. 數據庫/外部源:讀取數據編碼不一致。

最小修復:補全 Meta 標簽

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>中文標題正常顯示</title>
</head>

放在 <title> 之前,確保瀏覽器解析標題時已知編碼。

完整解決方案(生產環境標準)

1. PHP 入口文件統一發送 Header

<?php
// public/index.php 或框架啟動文件最頂部
header('Content-Type: text/html; charset=UTF-8');

2. 文件統一保存為 UTF-8 無 BOM

  • VS Code:右下角編碼選 UTF-8,勿選「UTF-8 with BOM」。
  • PhpStorm:Settings → Editor → File Encodings → Global/Project/Files 全部 UTF-8。
  • 批量轉換:find . -name "*.php" -exec iconv -f GBK -t UTF-8 {} -o {}.utf8 \;。

3. 數據庫連接指定字符集

<?php
// PDO
$pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'user', 'pass');
$pdo->exec("SET NAMES utf8mb4");

// mysqli
$mysqli->set_charset('utf8mb4');

注意:使用 utf8mb4 支援 Emoji,表結構也要 CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci。

4. HTML5 簡潔寫法

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <title>頁面標題</title>
</head>

排查檢查清單

檢查點命令/操作正常結果
HTTP 響應頭curl -I https://example.comContent-Type: text/html; charset=UTF-8
文件編碼file -bi your.phptext/x-php; charset=utf-8
數據庫連接字符集SHOW VARIABLES LIKE 'character_set%';均為 utf8mb4
表/列字符集SHOW CREATE TABLE users;CHARSET=utf8mb4
瀏覽器渲染編碼F12 → Network → Response Headers / Document → charsetUTF-8

避坑指南

  • ❌ 不要在 HTML 中同時出現 <meta charset> 和 <meta http-equiv> 衝突聲明。
  • ❌ 不要依賴 AddDefaultCharset utf-8 (Apache) 或 charset utf-8 (Nginx) 作為唯一手段,PHP 應主動發送 Header。
  • ❌ 老項目 GBK/GB2312 雙編碼共存 → 必須統一遷移至 UTF-8,轉換工具:iconv、mb_convert_encoding。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved