【问题标题】:Characters like ă and ţ getting changed to ? in Mysql像 ă 和 ţ 这样的字符被更改为 ?在 MySQL 中
【发布时间】:2018-08-23 12:40:17
【问题描述】:

我在保留一些带有特殊字符的字符串时遇到问题,例如:Livaković。在数据库中,它被保存为 Livakovi?。我的 Jdbc 字符串如下:

jdbc:mysql://localhost:3306/MyDb?autoReconnect=true&useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8&useSSL=false

我的数据库字符集如下:-

Mysql 版本是 5.6。

我已经在 jdbc 连接字符串中使用了 useUnicode=true 和 characterSetResults=utf8,但特殊字符仍然无法在 DB 中正确获取。

下面是show create的结果-

CREATE TABLE `table_name` (
`id` varchar(64) NOT NULL,
 `name` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

谁能推荐?

谢谢,

【问题讨论】:

  • 你为什么要这样混合编码?
  • 正如 Kayaman 所提到的,您必须确保您的数据库字符集也可以支持这些字符。 character_set_connection 只定义了字符的传输方式,character_set_database 说明了它们的存储方式。也许 GUIDO 在类似问题上给我的答案可能会对您有所帮助:stackoverflow.com/a/26285517/896249
  • 尝试同时使用useUnicode=true&characterEncoding=utf8。许多其他答案都指定了它们。
  • 还有edit你的问题,以显示SHOW CREATE TABLE table_name的结果
  • @Kayaman 没找到你?

标签: java mysql jdbc unicode special-characters


【解决方案1】:

这是要检查的几件事之一。

请参阅question marks,尤其是

  • 要存储的字节是否编码为utf8/utf8mb4?
  • 表中的列是否为CHARACTER SET utf8(或utf8mb4)。 (使用SHOW CREATE TABLE。)

更多 Java/JDBC 注释:

?useUnicode=yes&characterEncoding=UTF-8 添加到 JDBC URL(您当前有characterSetResults

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8" %>

compileJava.options.encoding = 'UTF-8'
<form method="post" action="/your/url/" accept-charset="UTF-8">

【讨论】:

  • 我已经用 show create table 更新了帖子。它使用的是 utf8。
  • 我添加了一些东西。
猜你喜欢
  • 2011-07-06
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 2012-03-25
相关资源
最近更新 更多