mysql,插入內容中有特殊符號報錯,怎么解決?


原本以為utf8是萬能的了,新建數據庫時選擇了如下圖

 

 然而,當往數據庫中插入的數據有特殊符號時,內容如下:

🌽玉米  🍒櫻桃

 無情的報錯開始了。

原來歷史原因,mysql數據庫字符集utf8不是真正的utf8,是占用3個字節的.

現在,新建數據庫時要選擇utf8mb4,這才是真正的utf8,如下圖

另外,原來連接數據庫中

1 $conn=mysqli_connect("127.0.0.1","用戶名","密碼","test_db1"); 
2 if (mysqli_connect_errno($conn)) { 
3     echo "連接 MySQL 失敗: " . mysqli_connect_error(); 
4 } 
5 mysqli_query($conn,"SET NAMES utf8mb4");

SET NAMES utf8  改為  SET NAMES utf8mb4

實驗一下,插入數據庫正常

 

 

 

 

————————————————————

在 MySQL 數據庫中,存在多個與 Unicode 相關的字符集和排序規則。

一般情況下應該使用 utf8mb4 字符集,這才是 MySQL 中真正的UTF-8編碼(如第一節所言,這里字符集和編碼又一次互指了)。相應的所謂 utf8 字符集是非標准的,其中單個字符最多只能編碼為 3 個字節,因此很多字符無法保存。

MySQL 中排序規則應該使用 utf8mb4_unicode_ci,而不是 utf8mb4_general_ci。后者性能稍微高於前者,但算法不符合 Unicode 標准,可能在處理某些語言文字時出現錯誤的結果。utf8mb4_unicode_ci對應 Unicode v4.0,較新版本的 MySQL 還同時支持 v5.2(utf8mb4_unicode_520_ci),v9.0(utf8mb4_0900_ai_ci)。

 


免責聲明!

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



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