sql >> Databáze >  >> RDS >> Mysql

Kódování JSP při vkládání neanglického textu do databáze MySQL

To se stane pouze tehdy, když si obě strany dokonale uvědomí rozdíly v kódování znaků na každé straně. Jakýkoli znak, který není pokryt kódováním znaků použitým na druhé straně, bude nahrazen otazníkem ? . Jinak byste viděli Mojibake .

V tomto konkrétním případě jsou těmito stranami strana Java a strana databáze, přičemž prostředníkem je ovladač JDBC. Chcete-li to vyřešit, musíte ovladači JDBC sdělit, v jakém kódování tyto znaky jsou. Můžete to provést nastavením useUnicode=true&characterEncoding=UTF-8 parametry v adrese URL připojení JDBC.

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

Potom, v závislosti na tom, jak posíláte parametry z klienta na server, budete možná muset také opravit kódování požadavku. Vzhledem k tomu, že po odstranění request.setCharacterEncoding("UTF-8") vidíte Mojibake , používáte POST. Takže tato část je v pořádku.

Pro případ, že byste k odesílání parametrů používali GET, museli byste nakonfigurovat kódování URI na straně serveru. Není jasné, jaký server používáte, ale například v případě Tomcatu jde o úpravu <Connector> záznam v /conf/server.xml takto:

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

Viz také:



  1. Mysql Left Join Null Výsledek

  2. Co je rychlejší COALESCE NEBO ISNULL?

  3. DbUpdateConcurrencyException pomocí Entity Framework 6 s MySql

  4. Jak aktualizovat hodnotu cizího klíče v databázi mysql