이 글은 주로 Java가 mysql에 잘못된 데이터를 삽입하는 문제에 대한 해결 방법을 자세히 소개합니다. 관심 있는 친구는 이를 참조할 수 있습니다.
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(); } } }
1 ?? ??MySQL??
데이터베이스를 사용하면 중국어를 정상적으로 추가해서 표시할 수 있지만, 접속하는 프로그램을 사용하면 중국어를 정상적으로 표시할 수 없는 것을 알 수 있습니다. 이렇게 하려면 MySQL의 기본 인코딩을 수정하고 my.ini(MySQL 구성 파일) 파일을 편집하여 인코딩을 수정해야 합니다.
MySQL의 기본 문자 집합을 utf8로 설정하고 클라이언트 구성 [ 클라이언트]를 선택하고 아래에 추가하세요.
default-character-set=utf8
서버 구성[mysqld]을 찾아 아래에 추가하세요
default-character-set=utf8
MySQL 데이터베이스를 utf8 인코딩으로 실행하도록 설정하고 utf8을 사용하세요 MySQL 데이터베이스에 연결할 때 Encoding
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 코딩 테스트
세 번째 레코드에서 이제 데이터베이스에 연결할 때 프로그램이 정상적으로 중국어를 추가하고 표시할 수 있음을 알 수 있습니다.
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编码 | +----+-------------------+
그래서 프로그램에 중국어를 표시하려면 utf8, gb2312 및 gbk의 세 가지 인코딩을 선택할 수 있습니다. 그러나 중국어 데이터를 추가하거나 명령줄에서 보려면 클라이언트의 인코딩을 gb2312 또는 gbk로 설정해야 합니다. 이는 다시 CMD와 관련이 있습니다. 부호화.
위 내용은 mysql에 삽입된 잘못된 데이터에 대한 Java 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!