Mysql
 sql >> Database >  >> RDS >> Mysql

Codifica JSP durante l'inserimento di testo non inglese nel database MySQL

Ciò accadrà solo quando entrambe le parti sono perfettamente consapevoli delle differenze di codifica dei caratteri in ciascuna parte. Qualsiasi carattere non coperto dalla codifica dei caratteri utilizzata sull'altro lato sarà sostituito da un punto interrogativo ? . Altrimenti avresti visto Mojibake .

In questo caso particolare, quei lati sono il lato Java e il lato database, con il driver JDBC come mediatore. Per risolvere questo problema, devi dire al driver JDBC in quale codifica si trovano quei caratteri. Puoi farlo impostando useUnicode=true&characterEncoding=UTF-8 parametri nell'URL di connessione JDBC.

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

Quindi, a seconda di come stai inviando i parametri dal client al server, potresti anche dover correggere la codifica della richiesta. Dato che stai vedendo Mojibake quando rimuovi request.setCharacterEncoding("UTF-8") , stai usando POST. Quindi quella parte va bene.

Nel caso in cui, se si utilizza GET per inviare i parametri, è necessario configurare la codifica URI sul lato server. Non è chiaro quale server stai utilizzando, ma nel caso, ad esempio, di Tomcat, si tratta di modificare il <Connector> voce in /conf/server.xml come segue:

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

Vedi anche: