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">