utf8mb4 編碼使用的一些紀錄

因為有個資料庫需要處理人名跟地名的罕見字,原本的 utf8 不敷使用,所以開使用 utf8mb4 來處理

在 my.cnf 加入了下面設定
[client]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[mysql]
default-character-set=utf8mb4

連線時把 SET names utf8; 改成 SET names utf8mb4;

預期會有特殊字元的欄位也會都改成 utf8mb4_unicode_ci ,但因為 utf8mb4 佔用空間實在太多,所以沒有全面使用這個編碼,希望能減少一點資源消耗(不過沒有仔細比較差異就是了)

這時候也發現 phpmyadmin 3.4.x 沒辦法從設定去變更編碼,因此需要修改 libraries/database_interface.lib.php 裡面的編碼, 4.x 不確定是否需要改,但位置會變成 libraries\DatabaseInterface.class.php

因為還不是很熟練,所以轉入轉出時經常會遇到罕見字消失問題(變成問號),有時候是連線編碼設定錯誤造成罕見字變成問號(但實際資料沒有問題), mysqldump 則是得加上 --default-character-set=utf8mb4 避免罕見字錯誤

沒有很深入了解問題的根源,只是先有個簡單的紀錄

評論

Sign In or Register to comment.