【问题标题】:how to save emoji in mysql using servlet如何使用 servlet 在 mysql 中保存表情符号
【发布时间】:2018-02-08 16:59:34
【问题描述】:

我正在使用带有 mysql 连接器 5.1.44 的 servlet 来连接到 mysql 数据库。

Connection conn = DriverManager.getConnection(Utils.DBURL+"/"+Utils.DBName+"?useUnicode=true&characterEncoding=utf8mb4&", Utils.DBUserName, Utils.DBPassword);

这适用于多语言输入,但在尝试保存表情符号时,最终只能保存“??”。 仅使用 servlet 我可以做些什么来保存表情符号?

servlet 代码

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException{
response.setContentType("application/json");
request.setCharacterEncoding("UTF-8");
String content = request.getParameter("content");
Class.forName("com.mysql.jdbc.Driver");
        Connection conn = 
DriverManager.getConnection(Utils.DBURL+"/"+Utils.DBName+"?
useUnicode=true&characterEncoding=utf8mb4&", Utils.DBUserName, 
Utils.DBPassword);
PreparedStatement stmt = conn.prepareStatement("INSERT INTO "
                            + "`feed`(`content`)"
                            + " VALUES (?)");
stmt.setString(1, content);
stmt.executeUpdate();
}

【问题讨论】:

标签: java mysql servlets


【解决方案1】:

有问题的表/数据库是否设置为存储这些 un​​icode 值?您在连接字符串中设置的字符集仅控制数据在客户端和服务器之间的传输方式。如果该列无法存储该数据,您最终会得到损坏的数据。

【讨论】:

  • 然后再添加一些代码来显示您如何准确地向/从数据库中插入和选择数据会有所帮助
  • 我可以使用phpmyadmin将表情符号添加到数据库中,我也可以成功查询。唯一的问题是当使用 servlet 进行插入时,它变成了 ?? ,我猜 servlet 出了点问题
  • 通过调用例如检查字符是否正确接收System.out.println(Character.codePointAt(content, posOfEmoji));
  • 没有代码显示你如何写入数据库,这是不可能的。
  • 我已经用完了通常的想法。您可以尝试通过常规 & 来更改 &。也许现在与四年前相反。使用 JDBC-Properties 设置这些值也值得一试。
猜你喜欢
  • 2017-05-06
  • 2021-09-02
  • 2016-08-13
  • 2019-08-07
  • 1970-01-01
  • 2013-01-06
  • 2021-01-09
  • 2016-05-09
  • 2014-05-13
相关资源
最近更新 更多