Heim  >  Artikel  >  Java  >  Java-Lösung für verstümmelte Daten, die in MySQL eingefügt werden

Java-Lösung für verstümmelte Daten, die in MySQL eingefügt werden

黄舟
黄舟Original
2017-09-21 10:03:471708Durchsuche

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

Stellen Sie die MySQL-Datenbank so ein, dass sie mit utf8-Codierung ausgeführt wird, verwenden Sie utf8-Codierung, wenn Sie eine Verbindung zur MySQL-Datenbank herstellen

Stoppen Sie MySQL und starten Sie es neu

net stop mysqlnet start mysql

Verbinden Sie sich erneut mit der Datenbank, überprüfen Sie die Codierung und den Inhalt der Datentabelle


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

Aus dem dritten Datensatz können wir ersehen, dass das Programm jetzt Chinesisch hinzufügen und normal anzeigen kann, wenn eine Verbindung zur Datenbank hergestellt wird



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

Jetzt können Sie sehen, dass Chinesisch normal angezeigt wird (hauptsächlich wegen utf8 Unterstützt auch Chinesisch). Wenn wir also das Befehlszeilentool verwenden, um eine Verbindung zur Datenbank herzustellen, ist es am besten, die Codierung des Clients zu ändern Die Verwendung einer GUI ist nicht erforderlich. Gleichzeitig kann das Programm nach dem Ändern der Client-Codierung weiterhin normal angezeigt werden (die beiden oben genannten Punkte wurden getestet).


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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn