Mysql
 sql >> Base de données >  >> RDS >> Mysql

Encodage JSP lors de l'insertion de texte non anglais dans la base de données MySQL

Cela ne se produira que lorsque les deux côtés seront parfaitement conscients des différences d'encodage des caractères de chaque côté. Tout caractère qui n'est pas couvert par l'encodage de caractères utilisé de l'autre côté sera remplacé par un point d'interrogation ? . Sinon, vous auriez vu Mojibake .

Dans ce cas particulier, ces côtés sont le côté Java et le côté base de données, avec le pilote JDBC comme médiateur. Pour résoudre ce problème, vous devez indiquer au pilote JDBC l'encodage de ces caractères. Vous pouvez le faire en définissant le useUnicode=true&characterEncoding=UTF-8 paramètres dans l'URL de connexion JDBC.

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

Ensuite, selon la façon dont vous envoyez les paramètres du client au serveur, vous devrez peut-être également corriger l'encodage de la requête. Étant donné que vous voyez Mojibake lorsque vous supprimez request.setCharacterEncoding("UTF-8") , vous utilisez POST. Donc cette partie est bonne.

Dans le cas où, si vous utilisiez GET pour envoyer les paramètres, vous auriez besoin de configurer l'encodage URI côté serveur. Le serveur que vous utilisez n'est pas clair, mais dans le cas de Tomcat, par exemple, il s'agit de modifier le <Connector> entrée dans /conf/server.xml comme suit :

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

Voir aussi :