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

MySQL 4.1 資料編碼轉換完整操作指南

     編輯:MySQL 資料庫相關知識

背景

MySQL 4.1 引入完整的字元集支援,舊版資料(通常為 gb2312/gbk)轉換為 utf8 時需謹慎操作。本文提供經實測的標準轉換流程。

轉換前準備

  1. 備份原始資料:
    mysqldump -u root -p database --add-drop-table --extended-insert > backup.sql
    • --add-drop-table:匯入時自動刪除舊表,免去手動建表
    • --extended-insert:使用多行 INSERT 語法,減小檔案體積

檔案編碼轉換步驟

  1. 使用 EmEditor 或 iconv 將 SQL 檔案從 gb2312 轉為 UTF-8 無 BOM 格式
    iconv -f gb2312 -t utf-8 backup.sql > backup_utf8.sql
    重要:必須去除 BOM(Byte Order Mark),否則 MySQL 會報語法錯誤(ERROR 1064)。
  2. 文字編輯器中全域取代:
    • gbk_bin → utf8_general_ci
    • gbk → utf8
  3. 在檔案最前端加入:SET NAMES utf8;

匯入與驗證

  1. 建立新資料庫(預設字元集 utf8)
  2. 匯入轉換後的 SQL:
    mysql -u root -p new_database < backup_utf8.sql
  3. 若遇 Got a packet bigger than 'max_allowed_packet' bytes 錯誤,修改 my.ini:
    [mysqld]
    max_allowed_packet = 10485760  # 10MB
    重啟 MySQL 服務後重試。

應用層配合調整

資料庫轉碼完成後,應用程式需同步調整:

  1. 資料庫連接後執行:mysql_query("SET NAMES 'utf8'");(最常見,如 Discuz、PhpWind)
  2. 程式/模板檔案轉碼:使用 iconv 將 PHP、HTML 模板檔案轉為 UTF-8 編碼
  3. 修改 HTML meta 標籤:<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

常見錯誤與對策

錯誤現象原因解決方法
ERROR 1064 near '???'SQL 檔案含 BOM以無 BOM 格式儲存
亂碼顯示應用層未設 SET NAMES連接後立即執行 SET NAMES utf8
匯入中斷max_allowed_packet 過小調大參數並重啟服務

遵循此流程,MySQL 4.1 編碼轉換可平滑完成,避免資料遺失與亂碼困擾。

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