【问题标题】:Save russian in mysql by java用java在mysql中保存俄语
【发布时间】:2021-03-29 06:15:21
【问题描述】:

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

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

id=14执行后table_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 ,整理 = utf16_general_ci ;

  • 字符集 = utf8 ,整理 = utf8_general_ci ;

  • 字符集 = utf16 ,整理 = utf16_general_ci ;

  • 字符集 = utf8mb4 ,整理 = utf8mb4_general_ci ;

这些方法都不起作用。你知道怎么解决吗?

【问题讨论】:

    标签: java mysql internationalization flyway


    【解决方案1】:
    • 使用CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

    • 您可能还需要在 JDBC 连接字符串中添加 characterEncoding=UTF-8

    通过这些设置,我可以在我的系统上编写和检索俄语和土耳其语字符。

    您可能也对How to support full Unicode in MySQL databases感兴趣

    【讨论】:

      【解决方案2】:

      我认为问题出在服务器上……你是哪台服务器?我用这个命令设置我的全球时区: set global time_zone = '+3:00'; 并尝试了您的命令: INSERT INTO table_lang (id, name) VALUES ('14', 'русский'); 我得到了适当的输出: id name 14 русский 试试我的命令,看看它是否有效:)

      【讨论】:

      • 时区与字符集有什么关系?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      相关资源
      最近更新 更多