使用 iconv("UTF-8", "gb2312//IGNORE", $str) 轉碼時,若字串包含破折號("—"),轉換會出錯。若不加 //IGNORE 參數,該字元之後的所有內容都會丟失。
mb_convert_encoding($FormValues['a'], "gb2312", "UTF-8");
需確認 PHP 已啟用 mbstring 擴展。此函式不會因特殊字元導致資料截斷。
將 MySQL 資料庫、資料表、欄位的 collation 設為 utf8_general_ci(或 utf8mb4),應用程式全端使用 UTF-8,即可避免轉碼需求,從根本解決問題。
iconv("UTF-8", "gb2312//IGNORE", $FormValues['a']);
雖可忽略錯誤,但會靜默丟失無法轉換的字元,可能導致資料不完整。