php 解決MySQL插入數據出現 Incorrect string value: '\xF0\x9F\x92\x8BTi…'錯誤

在項目中向MySQL插入數據時,發現數據插入不完整,通過調試,發現插入語句也沒什麼特殊的錯誤。但是就是差不進去,於是就打開mysqli錯誤的調試

$ret = mysqli_query($this->conn, $sql) or die(mysqli_error($this->conn));

結果彈出如下錯誤信息:

Incorrect string value: ‘\xF0\x9F\x92\x8BTi…’

有錯誤信息就好辦瞭,結果上網一查結果是:mysql編碼格式utf-8格式,不支持帶四字節的字符串插入。

網上提供兩種方法:

1.升級MySQL,然後將對應的數據類型改為utf8mb4類型

2.出現的四字節UTF-8字符過濾或轉化為自定義類型

由於裝的MySQL版本為5.1,所以方法1不適合;本人選瞭第二種過濾字符串,變成合適的3字節utf-8

$str = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $str);

雖然還是不能很完美解決,但是至少保證每條數據都可以正確插入!

如果想完美解決的話,最好升級MySql,直接改數據類型為utf8mb4類型

發佈留言