ホームページ >Java >&#&チュートリアル >mysql に挿入された文字化けしたデータに対する Java ソリューション
この記事は主に、Java が mysql に文字化けしたデータを挿入する問題の解決策を詳しく紹介します。興味のある友人は参考にしてください。
MySQLのデフォルトのエンコーディングは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\ | +--------------------------+--------------------------+
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中文显示 | +----+-------------------+
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(); } } }
2 ??MySQL??
データベースを使用する場合は正常に中国語を追加して表示できますが、接続するプログラムを使用すると正常に中国語が表示されないことがわかります。これを行うには、MySQL のデフォルトのエンコーディングを変更する必要があります。my.ini (MySQL 構成ファイル) ファイルを編集してエンコーディングを変更します
MySQL のデフォルトの文字セットを utf8 に設定し、クライアント構成を見つけます [ client] を選択し、以下に追加します。
default-character-set=utf8
サーバー構成 [mysqld] を見つけて下に追加します
default-character-set=utf8
MySQL データベースを utf8 エンコーディングで実行するように設定し、utf8 を使用しますMySQL データベースに接続するときのエンコーディング
net stop mysql
net 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?? | +----+-------------------------------+
2 ??MySQL?? 3 MySQL コーディングをテストします
3 番目のレコードから、プログラムがデータベースに接続する際に中国語を正常に追加して表示できるようになったことがわかります。
mysql> select * from messages; +----+-------------------------------+ | id | message | +----+-------------------------------+ | 1 | 虏芒脢脭MySQL脰脨脦脛脧脭脢戮 | | 2 | ??MySQL?? | | 3 | 娴嬭瘯MySQL缂栫爜 | +----+-------------------------------+
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编码 | +----+-------------------+
以上がmysql に挿入された文字化けしたデータに対する Java ソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。