[英]MySQL insert String error - UTF-8?
我正在插入一個mysql數據庫。 嘗試插入時出現以下錯誤
Incorrect string value: '\xF0\x9F\x87\xB7\xF0\x9F...' for column 'field_4' at row 1
我以為我只是通過簡單地將列編碼更改為utf8mb4來解決這個錯誤並且已經測試但最近又出現了這個錯誤。 我在使用php來解析字符串並在插入之前運行以下函數...
function strip_emoji($subject) {
if (is_array($subject)) {
// Recursive strip for multidimensional array
foreach ($subject as &$value) $value = $this->strip_emoji($value);
return $subject;
} else {
// Match Emoticons
$regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
$clean_text = preg_replace($regexEmoticons, '', $subject);
// Match Miscellaneous Symbols and Pictographs
$regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
$clean_text = preg_replace($regexSymbols, '', $clean_text);
// Match Transport And Map Symbols
$regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
$clean_text = preg_replace($regexTransport, '', $clean_text);
return
}
有幾個類似的問題,但我仍然有這些錯誤。 有關如何防止此錯誤的任何進一步建議? 我意識到它是一個表情符號unicode字符/精靈但不知道如何處理它。
您正在嘗試插入跨越4個字節的字符,因此您必須將列轉換為utf8mb4
字符集。
utf8
字符集限制為跨越3個字節的字符(Unicode字符U + 0000到U + FFFF)。
你有連接的utf8字符集嗎?
在PDO連接字符串中添加“; charset = utf8”,或執行查詢“ set names utf8 ”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.