sql >> Databasteknik >  >> RDS >> Mysql

JSP-kodning medan icke-engelsk text infogas i MySQL-databasen

Detta kommer bara att hända när båda sidorna är helt medvetna om teckenkodningsskillnaderna på varje sida. Alla tecken som inte täcks av teckenkodningen som används på andra sidan kommer att ersättas av ett frågetecken ? . Annars skulle du ha sett Mojibake .

I det här specifika fallet är dessa sidor Java-sidan och databassidan, med JDBC-drivrutinen som mediator. För att fixa detta måste du tala om för JDBC-drivrutinen vilken kodning dessa tecken finns i. Du kan göra det genom att ställa in useUnicode=true&characterEncoding=UTF-8 parametrar i JDBC-anslutningsadressen.

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

Sedan, beroende på hur du skickar parametrarna från klienten till servern, måste du möjligen också fixa förfrågningskodningen. Med tanke på det faktum att du ser Mojibake när du tar bort request.setCharacterEncoding("UTF-8") , du använder POST. Så den delen är bra.

För det fall att, om du använde GET för att skicka parametrarna, skulle du behöva konfigurera URI-kodning på serversidan. Det är oklart vilken server du använder, men i fallet med till exempel Tomcat är det en fråga om att redigera <Connector> post i /conf/server.xml enligt följande:

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

Se även:



  1. Hur använder man % operator från tillägget pg_trgm?

  2. Rails-MySQL-fel - oinitierad konstant MysqlCompat::MysqlRes

  3. BIGINT mysql-prestanda jämfört med INT

  4. Konvertera månadsnamn till månadsnummer i SQL Server