用java在mysql中保存俄语

irlmq6kh  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(420)

当我试图通过flyway从java应用程序执行查询时,数据库中的数据以不正确的形式保存。示例如下:

INSERT INTO `table_lang` (`id`, `name`) VALUES ('14', 'русский');

执行id=14后,表\u lang中的名称为
p??????
所以我认为问题是由输入文件引起的,我尝试在查询中插入用各种字符集转换的名称
русский
\u0440\u0443\u0441\u0441\u043a\u0438\u0439作为utf-16
\xd1\x80\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9作为utf-8
我试着分别改变兴趣表的字符集和校对
字符集=utf16,collate=utf16\U general\U ci;
字符集=utf8,collate=utf8\U general\U ci;
字符集=utf16,collate=utf16\U general\U ci;
字符集=utf8mb4,collate=utf8mb4\u general\u ci;
这些方法都不起作用。你知道怎么解决吗?

ojsjcaue

ojsjcaue1#

使用 CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci 您可能还需要添加 characterEncoding=UTF-8 在jdbc连接字符串中。
通过这些设置,我可以在我的系统上写和检索俄语和土耳其语字符。
您可能还对如何在mysql数据库中支持完全unicode感兴趣

p1tboqfb

p1tboqfb2#

我想问题出在服务器上。。。你是哪个服务器?我使用以下命令设置全局时区: set global time_zone = '+3:00'; 试过你的命令: INSERT INTO table_lang (id, name) VALUES ('14', 'русский'); 我得到了合适的结果: id name 14 русский 试试我的命令,告诉我它是否有效:)

相关问题