找回密碼
 註冊
搜索
查看: 2126|回復: 0

[問題] MySQL utf8mb4問題 :#1366 - Incorrect string value: '\xF0\x9F\x92\xAA\xE

[複製鏈接]
發表於 2026-6-15 23:35:36 | 顯示全部樓層 |閱讀模式
Push to Facebook
這個錯誤是因為您嘗試插入的資料包含 4個位元組的特殊字元(如 Emoji 表情符號),而 MySQL 預設的 utf8 編碼最多只支援 3 個位元組。
要徹底解決此問題,您需要將資料表和欄位的編碼改為 utf8mb4

🛠️ 解決步驟


1. 修改資料庫與資料表編碼

您可以透過 SQL 指令直接將目標資料庫和資料表的編碼更改為 utf8mb4:

sql
  1. -- 1. 修改資料庫預設編碼
  2. ALTER DATABASE 資料庫名稱 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

  3. -- 2. 修改資料表編碼
  4. ALTER TABLE 資料表名稱 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

  5. -- 3. (可選) 若只需針對特定欄位處理
  6. ALTER TABLE 資料表名稱 MODIFY 欄位名稱 VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
複製代碼

或是phpMyAdmin 裡面修改,選資料庫 utf8mb4_unicode_ci 全部勾選 更改所有資料表的編碼與排序, 更改所有資料表欄位的編碼與排序
pipe02.png

2. 檢查連線設定 (非常重要!)

若您的資料表已經是 utf8mb4,但程式寫入時仍報錯,代表應用程式與資料庫的連線編碼仍是 utf8。請確保連線時執行了這行指令:

sql
  1. SET NAMES utf8mb4;
複製代碼



如在PHP 8.2 提交時,出現反白(無任何訊息)

MySQL utf8mb4

MySQL utf8mb4

查找相關的檔案,有
  1. $this->conn->set_charset("utf8mb4");
複製代碼
  1. $db->query("SET NAMES 'utf8mb4'");
複製代碼
相關的都改utf8mb4


如 mysql.class.php , config.php
這樣特殊字元如:📣
就能正常寫入了


文章出處:NetYea 網頁設計



您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|TShopping

GMT+8, 2026-7-17 06:32 , Processed in 0.026020 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表