微信昵称含表情存储mysql

2023年 8月 23日 102.4k 0

微信昵称是我们在微信中展示给别人的名字,有时候我们会选择加入表情符号来增加互动的趣味性。但是,将含表情的微信昵称存储到mysql数据库中会遇到一些问题。

微信昵称含表情存储mysql

mysql数据库默认使用utf-8编码,但是它编码的范围比表情符号所需的unicode编码范围要小,因此如果直接存储含表情的微信昵称,可能会出现乱码或截断的情况。

为了解决这个问题,我们可以采用unicode中的utf-8标准,这样就可以完美支持emoji表情符号。具体做法如下:

CREATE TABLE `user_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nickname` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '微信昵称含emoji表情',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';

在定义表结构的时候,我们需要将字符集设置为utf8mb4,并指定排序规则为utf8mb4_unicode_ci。这样就可以存储含emoji表情的微信昵称了。

当我们读取含emoji表情的微信昵称时,也需要手动指定字符集,例如使用PHP代码:

$dsn = 'mysql:host=localhost;dbname=test;';
$username = 'root';
$password = '';
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8mb4');
try {
$dbh = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$stmt = $dbh->prepare('SELECT nickname FROM user_info WHERE id = ?');
$stmt->bindParam(1, $id);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo $result['nickname'];

在连接mysql数据库时,我们需要将字符集配置为utf8mb4,这样读取含emoji表情的微信昵称时就不会出现乱码了。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论