首页 > 解决方案 > 如何从用户名不和谐中将特殊字母存储在mysql中?

问题描述

我将有关不和谐用户的信息保存到我的 MySQL 数据库中,当用户具有像“John”这样的标准昵称但是当他们有像“”或“ѕт”这样的特殊字符时,我没有问题。我应该在哪里更改编码以支持这些字符?我得到的错误:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9D...' for column 'discord_name' at row 1

过去我尝试将 JdbcURL 更改为:

jdbc:mysql://" + HOST + "/" + DB + "?useUnicode=true&characterEncoding=UTF8

我将 useUnicode 和 characterEndocing 添加到 UTF8(我尝试使用 utf-8)并在 phpmyadmin 中我将 colaction 设置为:utf8mb4_unicode_ci

使用 Hikari 连接到数据库:

        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:mysql://" + HOST + "/" + DB + "?useUnicode=true&characterEncoding=UTF8");
        config.setUsername(USER);
        config.setPassword(PASS);

我的查询:

INSERT INTO `discord_user`" +
                        "(`discord_id`,`discord_name`," +
                        " `is_connected`, `code`, `update_at`, `create_at`," +
                        "`join_date`) VALUES " +
                        "($1, $2, $3, $4, $5, $6, $7)

我希望以可读的人类格式保存用户昵称。我不想序列化它。实际上我只是跳过将昵称放入数据库。

标签: javamysqldiscord

解决方案


推荐阅读