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"。