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

PHP 純代碼頁面中文亂碼徹底解決:header、數據庫、文件編碼三位一體

     編輯:PHP 相關知識

亂碼根因:四處編碼不一致

位置檢查項統一目標
1. 文件保存編碼編輯器右下角/保存選項UTF-8 (無 BOM)
2. HTML meta 聲明<meta charset="UTF-8">UTF-8
3. PHP header 輸出header("Content-Type: text/html; charset=UTF-8")UTF-8
4. 數據庫連接SET NAMES UTF8 / charset=utf8mb4UTF-8 / utf8mb4
5. Apache 配置AddDefaultCharset UTF-8UTF-8

核心解決代碼(放在文件最頂部 <?php 之後)

<?php
// 1. 輸出編碼聲明(必須在任何輸出前)
header("Content-Type: text/html; charset=UTF-8");

// 2. 數據庫編碼(連接建立後立即執行)
mysql_query("SET NAMES UTF8"); // 舊版
// 或 mysqli
$mysqli->set_charset("utf8mb4");
// 或 PDO
$pdo->exec("SET NAMES utf8mb4");

GBK/GB2312 老項目遷移指南

  • 文件編碼改為 GBK(或統一轉 UTF-8)
  • header("Content-Type: text/html; charset=GBK")
  • 數據庫 SET NAMES GBK
  • 數據庫表字符集 CHARSET=gbk

JS Alert 彈窗亂碼專項

純 PHP 頁面輸出 JS 時:

<?php
header("Content-Type: text/html; charset=UTF-8");
echo '<script>alert("中文內容正常顯示");</script>';
?>

編輯器設置檢查清單

  • VS Code:右下角 UTF-8,無 BOM
  • PhpStorm:File → File Encoding → UTF-8
  • Notepad++:編碼 → 轉為 UTF-8 (無 BOM)
  • Sublime:File → Save with Encoding → UTF-8

避坑提醒

  • header() 必須在 任何輸出之前(包括空白行、BOM)
  • UTF-8 無 BOM 是標準,帶 BOM 會導致 header already sent
  • 數據庫 utf8mb4 支持 Emoji,utf8 僅支持 BMP 平面
  • 框架通常有統一配置入口,勿重複設置
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved