在項目中向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類型