簡體   English   中英

MySQL插入字符串錯誤 - UTF-8?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM