Dette vil kun ske, når begge sider er helt klar over tegnkodningsforskellene på hver side. Ethvert tegn, der ikke er dækket af den tegnkodning, der bruges på den anden side, vil blive erstattet af et spørgsmålstegn ?
. Ellers ville du have set Mojibake
.
I dette særlige tilfælde er disse sider Java-siden og databasesiden med JDBC-driveren som mediator. For at løse dette skal du fortælle JDBC-driveren, hvilken kodning disse tegn er i. Du kan gøre det ved at indstille useUnicode=true&characterEncoding=UTF-8
parametre i JDBC-forbindelsens URL.
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8
Afhængigt af hvordan du sender parametrene fra klienten til serveren, skal du muligvis også rette anmodningskodningen. I betragtning af det faktum, at du ser Mojibake, når du fjerner request.setCharacterEncoding("UTF-8")
, du bruger POST. Så den del er i orden.
I det tilfælde, at hvis du brugte GET til at sende parametrene, skulle du konfigurere URI-kodning på serversiden. Det er uklart, hvilken server du bruger, men i tilfælde af for eksempel Tomcat, er det et spørgsmål om at redigere <Connector>
indtastning i /conf/server.xml
som følger:
<Connector ... URIEncoding="UTF-8">