2017-08-30 67 views
1

我正在使用servlet和mysql连接器5.1.44来连接mysql数据库。如何在使用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(); 
} 
+0

那里的'characterEncoding'值是什么值“utf8mb4”? – jingx

+0

在这里看到https://stackoverflow.com/questions/30074492/what-is-the-difference-between-utf8mb4-and-utf8-charsets-in-mysql – user3136742

+0

'utf8mb4'作为连接编码吗?我认为这只与存储有关。 – tadman

回答

0

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

+0

是列已设置。与utf8mb4_general_ci – user3136742

+0

然后一些更多的代码显示你如何插入和选择数据到数据库将帮助 – Lothar

+0

我可以使用phpmyadmin添加表情符号到数据库,我也可以成功查询它。唯一的问题是使用servlet进行插入时,它变成了? ,即时猜测什么是与servlet – user3136742

相关问题