我正在用javascript制作一个web应用程序。im使用JavaServlet,通过hibernate与mysql数据库连接。在servlet中有一个中文字符串,当我尝试将该字符串写入mysql字段时,它在mysql中显示为“?”。我在netbeans中的整个项目都设置为charset=utf-8。我试图将数据库中的排序规则和字符集设置为utf-8、utf8mb4、big5,但它们都不起作用。我还尝试将我的列从varchar改为nvarchar,但是当我单击apply(mysql工作台)时,该列仍然是“varchar”。
这是我的servlet
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json");
String tabla=request.getParameter("tabla");
//String tabla contains chinese caracters
String user=request.getParameter("user");
Configuration myConf = new Configuration();
myConf.configure("hib/hibernate.cfg.xml");
StandardServiceRegistry service = new StandardServiceRegistryBuilder().
applySettings(myConf.getProperties()).build();
SessionFactory myFactory = myConf.buildSessionFactory(service);
Session conn = myFactory.openSession();
Transaction t = conn.beginTransaction();
List<User>upislista;
upislista=conn.createQuery("SELECT u FROM User u WHERE useUsername='"+user+"'").list();
upislista.get(0).setUseKineski(tabla);
t.commit();
conn.close();
2条答案
按热度按时间x8diyxa71#
休眠xml:
连接url:
上面的更改足以让我从utf8升级到utf8mb4字符集方案。
作为旁注,我想澄清一下,utf-8是字符编码,而utf8mb4是mysql支持的字符集。mysql的utf8mb4是mysql的utf8的超集。
spring/hibernate筛选器:
Spring /冬眠:
“Spring”:
m0rkklqb2#
不知道你用的哪个版本的mysql数据库,但是你需要配置mysql数据库
一些版本冬眠能够正确配置,但是一些版本需要你手动配置。