im haciendo una aplicación web con javascript. Im usar servlets Java cosa que está conectado con la base de datos MySQL con hibernación. en Servlet hay una cadena en chino, y cuando trato de escribir que strin en el campo de MySQL se muestra como "?" en MySQL. toda mi proyecto en NetBeans se establece en charset = UTF-8. Traté de cotejo set y juegos de caracteres en la base de datos a UTF-8, utf8mb4, Big5 y ninguno de ellos funciona. también intenté cambiar mi columna de varchar a nvarchar pero cuando hago clic en aplicar (banco de trabajo mysql) la columna sigue siendo "varchar."
este es mi 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();
XML de hibernación:
<property name="hibernate.connection.CharSet">utf8mb4</property>
<property name="hibernate.connection.characterEncoding">utf8</property>
<property name="hibernate.connection.useUnicode">true</property>
URL de conexión:
db.url=jdbc:mysql://localhost:3306/db_nameuseUnicode=true&character_set_server=utf8mb4
Los cambios anteriores fueron suficientes para mí para actualizar el esquema de UTF8 utf8mb4 juego de caracteres.
Como nota al margen me gustaría hacer una aclaración que UTF-8 es la codificación de caracteres, mientras que utf8mb4 es un conjunto de caracteres que soporta MySQL. utf8mb4 de MySQL es un superconjunto de UTF-8 de MySQL.
filtro de primavera / Hibernate:
<form accept-charset="UTF-8">
Primavera / Hibernate:
<property name="url" value="jdbc:mysql://localhost:3306/miniprojetjee?useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8&characterEncoding=utf-8"/> (or maybe it is =yes)
"Primavera":
@RequestMapping(value = "/getRegion2", produces={"application/json; charset=UTF-8"},method = RequestMethod.GET)