In diesem Artikel wird hauptsächlich die Lösung für das Problem des Einfügens verstümmelter Daten durch Java in MySQL vorgestellt. Interessierte Freunde können sich darauf beziehen.
Wie man das Problem löst Problem mit verstümmelten Daten?
MySQL-Standardkodierung ist 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\ | +--------------------------+--------------------------+
Erstellen Sie eine Datentabelle und fügen Sie Daten ein
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中文显示 | +----+-------------------+
Ein Programm schreiben (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(); } } }
Programmausgabe
1 ????MySQL?????????
2 ??MySQL??
Wir sehen, dass wir Chinesisch zwar normal hinzufügen und anzeigen können, wenn wir die Datenbank verwenden, Wenn Sie ein Programm zum Herstellen einer Verbindung zur Datenbank verwenden, kann Chinesisch nicht normal angezeigt werden. Aus diesem Grund müssen wir die Standardcodierung von MySQL ändern und die Datei my.ini (MySQL-Konfigurationsdatei) bearbeiten, um die Codierung zu ändern
Legen Sie die Standardzeichen von MySQL fest. Der Satz ist utf8, suchen Sie die Client-Konfiguration [Client] und fügen Sie sie unten hinzu.
default-character-set=utf8
Suchen Sie die Serverkonfiguration [mysqld] und fügen Sie unten
default-character-set=utf8
Stoppen Sie MySQL und starten Sie es neu
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?? | +----+-------------------------------+Die Anzeige hier ist größtenteils immer noch verstümmelt Da die zuvor verwendete Codierung anders war, führen Sie das zuvor geschriebene Programm erneut aus: java JDBCTest
1 ????MySQL?????????2 ??MySQL??
3 Testen Sie die MySQL-Codierung
mysql> select * from messages; +----+-------------------------------+ | id | message | +----+-------------------------------+ | 1 | 虏芒脢脭MySQL脰脨脦脛脧脭脢戮 | | 2 | ??MySQL?? | | 3 | 娴嬭瘯MySQL缂栫爜 | +----+-------------------------------+Wenn wir auf die Datenbankanzeige zurückblicken, werden wir überrascht sein, herauszufinden, warum die angezeigten Zeichen alle verstümmelte Zeichen sind. Dies hängt hauptsächlich mit der Codierung des Befehls zusammen Zeile unter Windows. Überprüfen Sie die Eigenschaften in der Befehlszeile -> aktuelle Codepage der Option: 936 (ANSI/OEM – Vereinfachtes Chinesisch GBK) (So wird es auf meinem Computer angezeigt)
Das heißt, die GBK-Kodierung wird in der Befehlszeile verwendet und wir verwenden utf8, um es hinzuzufügen, wenn das Programm verbunden ist. Versuchen wir nun, die Codierung des Clients in gb2312 oder gbk zu ändern
Wenn wir also Chinesisch anzeigen möchten Im Programm können wir drei Kodierungen auswählen: utf8, gb2312 und gbk. Wenn wir jedoch chinesische Daten hinzufügen oder in der Befehlszeile anzeigen möchten, müssen wir die Kodierung des Clients auf gb2312 oder gbk einstellen CMD-Kodierung.
Das obige ist der detaillierte Inhalt vonJava-Lösung für verstümmelte Daten, die in MySQL eingefügt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!