>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 JDBC를 사용할 때 UTF-8 문자열이 왜곡되는 이유는 무엇입니까?

MySQL에서 JDBC를 사용할 때 UTF-8 문자열이 왜곡되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-01 16:24:02437검색

Why are UTF-8 Strings Garbled When Using JDBC with MySQL?

JDBC에서 MySQL UTF-8 문자열 처리 시 실수

JDBC 인터페이스를 통해 MySQL에서 UTF-8 문자열을 잘못 처리하면 데이터 손실이 발생할 수 있습니다. 손상 또는 디스플레이 문제. 이 기사에서는 JDBC를 통해 삽입된 데이터가 데이터베이스에서 왜곡되어 나타나는 시나리오를 조사합니다.

제공된 코드 조각은 MySQL 데이터베이스에 대한 연결을 설정하고 UTF-8 텍스트를 테이블에 삽입하는 Java 프로그램을 보여줍니다. 그러나 삽입된 데이터를 확인하면 예상 문자가 물음표로 바뀌면서 텍스트가 잘못 표시됩니다.

문제는 MySQL 내의 문자 인코딩 설정에 있습니다. 기본적으로 MySQL은 UTF-8과 호환되지 않는 latin1 문자 집합과 데이터 정렬을 사용합니다. 이 문제를 해결하려면 다음 단계가 중요합니다.

1. 문자 인코딩 설정 확인

현재 문자 인코딩 설정을 보려면 다음 SQL 명령을 실행하십시오.

show variables like 'character%';
show variables like 'collation%';

출력에는 두 문자 인코딩 모두에 대해 문자 인코딩이 utf8로 설정되어 있어야 합니다. 서버와 데이터베이스

2. UTF-8용 MySQL 구성

인코딩이 올바르지 않은 경우 다음 줄을 추가하여 MySQL 구성 파일(my.cnf)을 업데이트하여 수정하세요.

[mysqld]
character-set-server = utf8
character-set-filesystem = utf8

또는 MySQL Workbench를 사용하여 이러한 설정을 시각적으로 수정할 수 있습니다.

3. 적절한 URL 매개변수로 연결

Java 연결을 설정할 때 JDBC URL에 다음 매개변수를 포함하세요.

jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8

4. 불필요한 명령 제거

코드에서 다음 명령을 제거하십시오.

query = "set character set utf8";
stat.execute(query);

이러한 명령은 연결 매개변수가 올바르게 구성된 경우 필요하지 않습니다.

예상 결과

변경 사항을 적용하고 다시 시작한 후 MySQL의 경우 데이터는 JDBC를 사용하여 올바르게 저장 및 검색되어야 하며 예상 UTF-8 형식으로 표시되어야 합니다.

위 내용은 MySQL에서 JDBC를 사용할 때 UTF-8 문자열이 왜곡되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.