【发布时间】: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();
}
【问题讨论】:
-
characterEncoding那里的“utf8mb4”值是多少? -
utf8mb4是否用作连接编码?我认为这仅与存储有关。