當前位置: 首頁> 最新文章列表> PHP中文亂碼全面解決方案:教你徹底搞定中文名亂碼問題

PHP中文亂碼全面解決方案:教你徹底搞定中文名亂碼問題

M66 2025-11-06

PHP中文名亂碼問題的原因

在進行PHP開發時,中文名亂碼問題時常出現。原因通常是字符集不一致,例如文件不是UTF-8編碼、數據庫連接未設置UTF-8、或HTML頁面頭部未聲明正確編碼。要徹底解決亂碼,關鍵是確保整個項目的編碼保持一致。

設置文件編碼

首先要確保PHP文件的編碼格式為​​UTF-8(無BOM)。在編輯器中將文件保存為UTF-8編碼格式,並在PHP文件開頭通過header函數設置輸出編碼:

<?php
header('Content-Type: text/html; charset=utf-8');
?>

設置數據庫連接編碼

如果你的PHP程序需要與MySQL數據庫交互,務必在連接後設置UTF-8編碼。這樣能保證數據庫讀寫的中文數據不會出現亂碼:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

$conn = new mysqli($servername, $username, $password, $dbname);
$conn-> set_charset("utf8");
?>

設置HTML頁面編碼

網頁輸出時,同樣要指定UTF-8編碼,這能防止瀏覽器錯誤解析頁面內容:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>中文亂碼問題</title>
</head>
<body>
<?php
echo "你好,世界!";
?>
</body>
</html>

使用mb_convert_encoding函數進行轉換

當字符串本身編碼不一致時,可以使用PHP的mb_convert_encoding函數手動轉換為UTF-8:

<?php
$str = "中文亂碼";
$str_utf8 = mb_convert_encoding($str, "UTF-8");
echo $str_utf8;
?>

設置HTTP頭信息

在輸出任何內容之前,通過header函數設置HTTP頭信息,可以明確指定輸出內容的編碼類型,從而有效避免亂碼:

<?php
header('Content-Type: text/html; charset=utf-8');
echo "你好,世界!";
?>

總結

解決PHP中文名亂碼的核心思路是確保“文件編碼、數據庫編碼、網頁編碼、HTTP頭編碼”統一為UTF-8。只要編碼一致,PHP處理中文就不會再出現亂碼問題。這不僅能提升網站的兼容性,也能讓中文顯示更自然、準確。