sql >> Base de Datos >  >> RDS >> Mysql

Codificación JSP al insertar texto que no está en inglés en la base de datos MySQL

Esto solo sucederá cuando ambos lados sean perfectamente conscientes de las diferencias de codificación de caracteres en cada lado. Cualquier carácter que no esté cubierto por la codificación de caracteres utilizada en el otro lado será reemplazado por un signo de interrogación ? . De lo contrario, habrías visto Mojibake .

En este caso particular, esos lados son el lado de Java y el lado de la base de datos, con el controlador JDBC como mediador. Para solucionar esto, debe decirle al controlador JDBC en qué codificación se encuentran esos caracteres. Puede hacerlo configurando useUnicode=true&characterEncoding=UTF-8 parámetros en la URL de conexión JDBC.

jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8

Luego, dependiendo de cómo envíe los parámetros del cliente al servidor, es posible que también deba corregir la codificación de la solicitud. Dado el hecho de que está viendo Mojibake cuando elimina request.setCharacterEncoding("UTF-8") , estás usando POST. Así que esa parte está bien.

En el caso de que, si estuviera usando GET para enviar los parámetros, necesitaría configurar la codificación URI en el lado del servidor. No está claro qué servidor está utilizando, pero en el caso de, por ejemplo, Tomcat, se trata de editar el <Connector> entrada en /conf/server.xml de la siguiente manera:

<Connector ... URIEncoding="UTF-8">

Ver también: