Comment insérer correctement des chaînes UTF-8 dans MySQL via JDBC
Énoncé du problème :
Lors de l'insertion de chaînes UTF-8 dans une base de données MySQL à l'aide de l'interface JDBC, les caractères s'affichent sous forme de symboles corrompus ou illisibles.
Chaîne attendue : Апарати
Résultat réel : ???????
Dépannage initial :
<code class="java">Class.forName("com.mysql.jdbc.Driver").newInstance(); String dbPath = String.format( "jdbc:mysql://%s:%d/%s?user=%s&password=%s&characterEncoding=utf-8&" + "&useUnicode=true", ci.host, ci.port, ci.dbName, ci.user, ci.password); conn = java.sql.DriverManager.getConnection(dbPath);</code>
Dépannage supplémentaire :
Ces mesures ont été prises en plus :
Suppression des lignes suivantes du code :
<code class="java">query = "set character set utf8"; stat.execute(query);</code>
Solution :
Il est apparu que la source de divergence entre le code Java et les données de la table MySQL était due à des incohérences dans les jeux de caractères. Le problème a été résolu lorsque les paramètres du jeu de caractères dans le code Java ont été supprimés.
En comparant la commande MySQL utilisée dans le code Java à la commande analogue de l'invite de commande, une différence subtile a été découverte :
<code class="java">String query = "insert into clt" + " (id, text) values (?, ?)";</code>
<code class="bash">mysql> insert into clt (id, text) values (12656697, "Апарати");</code>
Dans le code Java, le suffixe utf8 du jeu de caractères a été omis de l'instruction create table. Cette divergence entre le code Java et la commande MySQL directe crée une inadéquation dans la gestion du jeu de caractères.
Conclusion :
Lors de l'insertion de chaînes UTF-8 dans MySQL à l'aide de l'interface JDBC, il est essentiel de s'assurer que les paramètres du jeu de caractères sont cohérents entre le code Java et la configuration de la base de données. Cela garantit que les chaînes sont correctement traitées et stockées dans la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!