確認目前資料庫連線使用的字元集編碼,避免中文亂碼。
<?php
$mysqli = new mysqli('localhost', 'user', 'pwd', 'db');
echo '字元集: ' . $mysqli->character_set_name(); // utf8mb4
// 或程序風格
echo mysqli_character_set_name($mysqli);
$pdo = new PDO('mysql:host=localhost;dbname=db;charset=utf8mb4', 'user', 'pwd');
$stmt = $pdo->query('SHOW VARIABLES LIKE "character_set_connection"');
echo $stmt->fetchColumn(); // utf8mb4
// mysqli
$mysqli->set_charset('utf8mb4');
// PDO (在 DSN 中指定)
$dsn = 'mysql:host=localhost;dbname=db;charset=utf8mb4';
| 名稱 | 支援範圍 | 備註 |
|---|---|---|
| utf8mb4 | Unicode 全字元 (含 Emoji) | MySQL 5.5.3+ 推薦 |
| utf8 | BMP 字元 (無 Emoji) | 舊專案常見,實為 utf8mb3 |
| latin1 | 西歐字元 | 預設值,中文會亂碼 |
SET NAMES utf8mb4 或 DSN 指定)<meta charset="utf-8">Content-Type: text/html; charset=utf-8