Cet article présente principalement en détail la solution au problème de l'insertion de données tronquées par Java dans MySQL. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
Lorsqu'ils rencontrent l'insertion de Java dans MySQL Comment résoudre le problème. problème de données tronquées ?
L'encodage par défaut de MySQL est latin1
mysql> show variables like 'character%'; +--------------------------+--------------------------+ | Variable_name | Value | +--------------------------+--------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | D:\MySQL\share\charsets\ | +--------------------------+--------------------------+
Créez une table de données et insérez des données
mysql> use test; mysql> create table messages ( -> id int(4) unsigned auto_increment primary key, -> message varchar(50) not null -> ) engine=myisam default charset=utf8; mysql> insert into messages (message) values ("测试MySQL中文显示"); mysql> select * from messages; +----+-------------------+ | id | message | +----+-------------------+ | 1 | 测试MySQL中文显示 | +----+-------------------+
Ecriture d'un programme (Java)
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JDBCTest { public static void main(String[] args) { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "root"; try { Class.forName(driver); Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); stmt.executeUpdate("insert into messages (message) values ('测试MySQL编码')"); ResultSet rs = stmt.executeQuery("select * from messages"); while (rs.next()) { int id = rs.getInt("id"); String message = rs.getString("message"); System.out.println(id + " " + message); } rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }
Sortie du programme
1 ????MySQL?????????
2 ??MySQL??
Nous voyons que même si nous pouvons ajouter et afficher le chinois normalement lors de l'utilisation de la base de données, Lorsque lors de l'utilisation d'un programme pour se connecter à la base de données, le chinois ne peut pas être affiché normalement. Pour cette raison, nous devons modifier l'encodage par défaut de MySQL et éditer le fichier my.ini (fichier de configuration MySQL) pour modifier l'encodage
<. 🎜>
default-character-set=utf8
default-character-set=utf8
Arrêtez et redémarrez MySQL
net stop mysqlnet start mysql
mysql> show variables like 'character%'; +--------------------------+--------------------------+ | Variable_name | Value | +--------------------------+--------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | D:\MySQL\share\charsets\ | +--------------------------+--------------------------+ mysql> use test; mysql> select * from messages; +----+-------------------------------+ | id | message | +----+-------------------------------+ | 1 | 虏芒脢脭MySQL脰脨脦脛脧脭脢戮 | | 2 | ??MySQL?? | +----+-------------------------------+
1 ????MySQL?????????2. ??MySQL??
3 Testez le codage MySQL
mysql> select * from messages; +----+-------------------------------+ | id | message | +----+-------------------------------+ | 1 | 虏芒脢脭MySQL脰脨脦脛脧脭脢戮 | | 2 | ??MySQL?? | | 3 | 娴嬭瘯MySQL缂栫爜 | +----+-------------------------------+
C'est-à-dire l'encodage GBK. est utilisé sur la ligne de commande, et nous utilisons utf8 pour l'ajouter lorsque le programme est connecté. Il y aura donc des caractères tronqués. Essayons maintenant de changer l'encodage du client en gb2312 ou gbk
.
mysql> show variables like 'character%'; +--------------------------+--------------------------+ | Variable_name | Value | +--------------------------+--------------------------+ | character_set_client | gb2312 | | character_set_connection | gb2312 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | gb2312 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | D:\MySQL\share\charsets\ | +--------------------------+--------------------------+ mysql> use test; mysql> select * from messages; +----+-------------------+ | id | message | +----+-------------------+ | 1 | ????MySQL???????? | | 2 | ??MySQL?? | | 3 | 测试MySQL编码 | +----+-------------------+
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!