首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 儲存越南文等特殊語言亂碼解決方案

     編輯:MySQL 資料庫相關知識

問題現象

專案需儲存越南文,應用層已設定 UTF-8 連線:

define("MYSQL_ENCODE", "UTF8");
mysql_query('SET NAMES '.MYSQL_ENCODE, $conn);

但插入資料後,越南文字符變成 ?,中文正常。

根因分析

  • 資料庫/資料表預設字符集為 gbk,僅支援中文
  • 越南文屬於擴展拉丁字符,需 utf8 或 utf8mb4 支援
  • 修改資料表字符集不會自動轉換既有欄位字符集

解決步驟

  1. 確認資料庫:php_college_web
  2. 確認資料表:city_article
  3. 需修改欄位:title、content
  4. 執行 ALTER TABLE 逐欄位指定字符集與校對規則:
ALTER TABLE city_article 
CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci;

ALTER TABLE city_article 
CHANGE content content TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

關鍵點總結

  • 必須逐欄位修改,資料表級 ALTER TABLE ... CHARSET=utf8 不會改變既有欄位
  • 推薦使用 utf8_unicode_ci 校對規則,多語言排序更準確
  • 現代專案建議直接使用 utf8mb4 完整支援 Emoji 與所有 Unicode 字符
  • 應用層連線字符集、資料庫/資料表/欄位字符集三者必須一致

驗證方法

SHOW CREATE TABLE city_article\G
-- 檢查欄位 CHARSET 與 COLLATE 是否為 utf8 / utf8_unicode_ci
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved