sql >> Database >  >> RDS >> Mysql

JSP-codering tijdens het invoegen van niet-Engelse tekst in de MySQL-database

Dit zal alleen gebeuren als beide partijen zich perfect bewust zijn van de verschillen in karaktercodering aan elke kant. Elk teken dat niet wordt gedekt door de tekencodering die aan de andere kant wordt gebruikt, wordt vervangen door een vraagteken ? . Anders had je Mojibake gezien .

In dit specifieke geval zijn dat de Java-kant en de database-kant, met het JDBC-stuurprogramma als bemiddelaar. Om dit op te lossen, moet u het JDBC-stuurprogramma vertellen in welke codering deze tekens zitten. U kunt dat doen door de useUnicode=true&characterEncoding=UTF-8 in te stellen. parameters in de JDBC-verbindings-URL.

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

Afhankelijk van hoe u de parameters van de client naar de server verzendt, moet u vervolgens mogelijk ook de codering van de aanvraag corrigeren. Gezien het feit dat u Mojibake ziet wanneer u request.setCharacterEncoding("UTF-8") verwijdert , je gebruikt POST. Dus dat deel is prima.

Voor het geval dat, als u GET zou gebruiken om de parameters te verzenden, u URI-codering aan de serverzijde zou moeten configureren. Het is onduidelijk welke server je gebruikt, maar in het geval van bijvoorbeeld Tomcat is het een kwestie van de <Connector> aanpassen invoer in /conf/server.xml als volgt:

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

Zie ook:



  1. met behulp van mysql_close()

  2. MySQL COUNT() over meerdere kolommen

  3. Reflectie in PLSQL?

  4. UTF-8:correct weergegeven in database, maar niet in HTML ondanks utf-8 charset