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

解決 jQuery GET 參數在 UTF-8 環境下的中文亂碼問題 (PHP 端處理)

     編輯:PHP 綜合知識

前端編碼比較

<script>
document.write(escape("哈哈") + "<br>");           // %u54C8%u54C8
document.write(unescape("%u54C8%u54C8") + "<br>");   // 哈哈
document.write(encodeURIComponent("哈哈") + "<br>"); // %E5%93%88%E5%93%88
document.write(decodeURIComponent("%E5%93%88%E5%93%88") + "<br>"); // 哈哈
</script>
  • escape/unescape:已棄用,產生 %uXXXX 格式,非標準 URL 編碼。
  • encodeURIComponent/decodeURIComponent:標準 RFC 3986,產生 UTF-8 百分號編碼,推薦使用。

PHP 端解碼示範

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

$encoded = "%E5%93%88%E5%93%88"; // 瀏覽器送來的 UTF-8 編碼

echo urldecode($encoded) . "<br>";       // 哈哈 (推薦)
echo rawurldecode($encoded) . "<br>";    // 哈哈 (RFC 3986 標準,空格不轉 +)
echo utf8_decode($encoded) . "<br>";     // 亂碼 (utf8_decode 將 UTF-8 轉 ISO-8859-1,不適用)
echo $encoded . "<br>";

// 實際接收 $_GET 參數
echo $_GET['act'] . "<br>";
echo urlencode($_GET['act']) . "<br>";
?>

最佳實踐

  1. 前端:統一使用 encodeURIComponent() 傳送參數。
  2. 後端:直接讀取 $_GET 或 $_REQUEST,PHP 已自動以 UTF-8 解碼(前提是頁面與資料庫皆為 UTF-8)。
  3. 編碼一致性:確保 header('Content-Type: text/html; charset=utf-8')、資料庫連線 SET NAMES utf8mb4、檔案儲存為 UTF-8 無 BOM。
  4. 避免:urldecode() 重複解碼、utf8_decode()、iconv() 不必要轉碼。

結語

亂碼根源多為編碼不一致。前端 encodeURIComponent + 後端 UTF-8 環境 + 統一字元集,即可徹底解決中文參數傳遞問題。

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