php中 mysql 插入特殊字符(手機端的emoji表情)出現異常


今天在用mysql存儲從微信服務器拉來的數據,出現插入數據異常,報 Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F 的錯誤。
最終在網上查了一下,有幾個解決方案:
 
方案一:
如果是用thinkphp開發的話,在tinhkphp  config.php中連接數據庫配置文件中 設置
'DB_CHARSET'=> 'utf8mb4', // 字符集
這樣就可以解決問題。
如果沒用thinkphp開發,直接使用php開發的話,在執行sql語句的時候,要添加
mysql_query("set names utf8");或者 mysql_query("set character_set_client utf8mb4");
方案二:
 把mysql數據庫升級到5.5以上,然后數據庫編碼設置為utf8mb4,字段的編碼最好也為utf8mb4。
 
 
問題:用戶個人信息設置時使用emoji表情,MySQL如果不是utf8mb4會導致異常。
SHOW VARIABLES LIKE 'collation_%';     -----查看mysql 系統編碼
SHOW VARIABLES LIKE 'char%'; 

SET    NAMES utf8;  ----相當於設置了 character_set_client、character_set_connection、character_set_results
SET   NAMES utf8mb4;
SET   character_set_client=utf8mb4;    ----針對特殊字符
SET   character_set_connection=utf8mb4;--針對特殊字符
SET   character_set_results=utf8mb4;

總之,就是在character_set_client或者character_set_connection中,至少一個的編碼為utf8mb4。
utf8mb4這種格式,就是為了兼容手機端的,比UTF-8多了好多格式,包括了UTF-8的格式。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM