gpt4 book ai didi

php - MySQL 不处理一些 utf8 字符

转载 作者:行者123 更新时间:2023-11-29 05:23:15 26 4
gpt4 key购买 nike

表:

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

连接后我发送以下 SQL:

SET NAMES utf8;

然后是SQL:

INSERT INTO `test` (`f`) VALUES ("с😊с-е в терновнике");

结果在表中我有 1 条记录,其值“с”刚好达到😊符号。是否有机会正确处理所有此类符号?如果这很重要,所有这些都由 PHP 完成。

最佳答案

那个字符是Unicode Character 'SMILING FACE WITH SMILING EYES' (U+1F60A) .

U+1F60A在plane 1,Supplementary Multilingual Plane,而MySQL的utf8只支持plane 0,Basic Multilingual Plane。所以你必须使用 utf8mb4。

该符号在字体中也未得到广泛支持,因此您可能很难显示它。


回复您的评论,这里有一个过滤掉基本平面之外的字符的演示。

<?php

$str = "с😊с-е в терновнике";
$str = preg_replace('/[^\x{0000}-\x{ffff}]/u', '', $str);
echo $str . "\n";

但如果我上面的回答不清楚,MySQL 确实支持 utf8mb4 中的补充平面。

关于php - MySQL 不处理一些 utf8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23138510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com