mysql 口字元號怎麼處理?
mysql 口字元號怎麼處理?
mysql 欄位是text的,遇到 口字元號就會自動從這裡斷開,後面的內容無法入庫。使用addslashes函數無效。
口字元號就是比口字細那種,不知道是亂碼還是無法顯示的字元。
------解決思路----------------------
$s = '44CQ6IuP55CzVEVBTeiDtuWOn+ibi+eZveWPjemmiPCfmYjwn5mI44CR5pys5p2l6YO96KaB552h5LqG44CC56qB54S25p2l5LqG6IO25Y6f6JuL55m955qE5Y+N6aaI8J+YgvCfmILlpKfljYrlpJznmoTvvIzkvaDov5norqnnvqTph4znmoTnlLfku6PnkIbku6zmgI7kuYjmtLvwn5iz5Y2B5LqU5aSp55qE5pWI5p6c77yM5bCx5piv6L+Z5LmI54mb6YC84pyM54Wn6L+Z5Liq6LaL5Yq/5LiL5Y6777yM5LiA5Liq55aX56iL5LiN5q2i5aSn5LiA5LiqY3Vw5LqG5ZCn8J+Ysei/meWwseaYr+iDtuWOn+ibi+eZveS4uuWVpei/meS5iOeBq+eahOaEv+aEj++8gfCfkYrwn5GK5LiA55aX56iL5peg5pWI6YCA5qy+77yB5bCx5piv5pyJ5bqV5rCU4pyMd2VpeGluOnN1bGluMDkwOA==';
$s = base64_decode($s);
//echo $s, PHP_EOL;
preg_match_all('/./u', $s, $m);
//print_r($m[0]);
echo bin2hex($m[0][13]);
f09f9988
這是一個 emoji Emoji,需要設定字元集為 utf8mb4 才能進行儲存
如果你的 MySQL 版本較低,不支援 utf8mb4 的話,可以通過字串替換變通一下
入庫前
$text = preg_replace_callback('/[\xf0-\xf7].{3}/', function($r) { return [email protected]' . base64_encode($r[0]);}, $text);
出庫後再換回來