Php MySQL不处理某些utf8字符

Php MySQL不处理某些utf8字符,php,mysql,utf-8,char,Php,Mysql,Utf 8,Char,表: 连接后,我立即发送以下SQL: CREATE TABLE `test` ( `f` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 然后SQL: SET NAMES utf8; 插入'test'(`f`)值(“c该字符为 U+1F60A位于平面1(补充多语言平面)中,但MySQL的utf8仅支持平面0(基本多语言平面),因此必须使用utf8mb4 该符号在字体中也不受广泛支持,因此您可能很难显示它 如果您有意

表:

连接后,我立即发送以下SQL:

CREATE TABLE `test` (
  `f` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后SQL:

SET NAMES utf8;
插入'test'(`f`)值(“c该字符为

U+1F60A位于平面1(补充多语言平面)中,但MySQL的utf8仅支持平面0(基本多语言平面),因此必须使用utf8mb4

该符号在字体中也不受广泛支持,因此您可能很难显示它


如果您有意见,这里演示了如何过滤掉基本平面以外的字符


从测试中选择长度(f)的
是什么意思?如果它是
1
,那么你的文本确实被截断了。如果它更大,那么你的字符串真的在那里,并且你在检索它时出错了。选择f,测试中的长度(f)给出长度(f)=2.2似乎等于1个字符1 utf8是多字节的。有没有一种很好的方法可以删除mysql使用PHP不支持的所有字符。或者你可以给我一个这样的字符列表?可能是相关的。@Vatev,谢谢,关于这个问题的两个答案都很有趣。