2018年7月27日 星期五

latin1資料轉成uft8mb4 (舊版SFS3轉新版 SFS3.1)

狀況:舊版SFS3學務系統轉成 新版SFS3.1,舊資料中文字編碼為 latin1 格式





1.用phpmyadmin將資料庫匯出,編碼那裏選擇 iso-8859-1
(下方 顯示說明 (包括匯出時間、PHP 版本和伺服器版本等資訊) 建議取消打勾,有時會造成亂碼導致無法匯入)



2.用Notepad++開啟檔案,選擇編譯成utf-8



3.搜尋

DEFAULT CHARSET=latin1

把以上這行字取代成下面這行

DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci



4.用phpmyadmin匯入檔案

這一步會遇到很多 許功蓋的問題 導致資料庫匯入到一半中斷

我的作法是看phpmyadmin匯入中斷顯示的訊息

去修改要匯入的 sql檔案

例如

把 餐\' → 餐'
把 閱\' → 閱'
把 許\' → 許'
把 歿\' → 歿'

除了許功蓋問題外,資料內還有一些特殊字元或當初輸入資料不完全所造成的亂碼
這些也會造成資料庫輸入錯誤

例如

'物品穢?, →  '物品穢'
'103台東縣中小學聯合運動會羽球?, → '103台東縣中小學聯合運動會羽球'
'63850雲林縣麥寮鄉雷?, → '63850雲林縣麥寮鄉雷'


把問題全部解決之後,就可以成功匯入了..

沒有留言:

張貼留言