>  기사  >  Java  >  Java에서 jdbc를 통해 데이터베이스에 연결할 때 중국어 문자가 깨지는 문제에 대한 해결 방법

Java에서 jdbc를 통해 데이터베이스에 연결할 때 중국어 문자가 깨지는 문제에 대한 해결 방법

WBOY
WBOY앞으로
2023-04-26 14:04:081955검색

1. jdbc를 사용하여 데이터베이스에 연결하면 데이터의 데이터가 "???"로 표시됩니다. 두 가지 해결 방법:

1. 서버 측에서 my.cnf 파일을 편집하고 [mysqld] 아래에 Character_set_server = utf8 줄을 추가한 다음 mysql 서비스를 다시 시작하세요2. jdbc를 사용하여 연결할 때 올바른 인코딩(jdbc:mysql://127.0)을 지정하세요. .0.1:3306/test?useUnicode=true&characterEncoding= utf8

2. Character_set_server = utf8로 구성한 이유는 무엇입니까? jdbc에 연결할 때 인코딩을 지정할 필요가 없습니다. , jdbc는 먼저 서버의 Character_set_server 값을 쿼리한 다음 연결 시 사용할 인코딩을 결정합니다. 클라이언트의 자동 감지 인코딩 기능을 재정의하려면 CharacterEncoding 속성

문서 주소를 사용할 수 있습니다: https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-charsets.html

3. MYSQL의 문자 처리 메커니즘은 무엇입니까? jdbc가 인코딩을 지정하지 않거나 서버가 문자_set_server=utf8을 설정하지 않아 문자가 깨질 수 있는 이유는 무엇입니까?

먼저 MYSQL의 문자 집합을 확인하세요

다음 매개변수를 설명합니다.

character_set_client: 클라이언트 소스 데이터에서 사용하는 문자 집합

character_set_connection: 연결 계층 문자 집합 Java에서 jdbc를 통해 데이터베이스에 연결할 때 중국어 문자가 깨지는 문제에 대한 해결 방법character_set_database: 현재 선택한 데이터베이스의 기본 문자 집합

character_set_filesystem: OS의 파일 이름을 다음으로 변환합니다. 이 문자 집합은 아무 작업도 수행하지 않습니다. 변환됨

character_set_results: 쿼리 결과 문자 집합

character_set_server: 기본 내부 작업 문자 집합
character_set_system: 시스템 메타데이터 문자 집합

character_sets_dir: 문자 집합 경로


mysql 구성 파일을 수정합니다. 서버 측에서 my.cnf 파일을 편집하고 [mysqld] 아래에 Character_set_server = utf8 줄을 추가한 다음 mysql 서비스를 다시 시작한 다음 문자 집합을 쿼리합니다.



그런 다음 문자 집합 변환 프로세스를 이해합니다.

데이터 삽입:

Java에서 jdbc를 통해 데이터베이스에 연결할 때 중국어 문자가 깨지는 문제에 대한 해결 방법

서버가 클라이언트(character_set_client)로 데이터를 전송하면 문자 집합이 Character_set_connection으로 변환되고, 이후 Character_set_connection 문자 집합이 해당 문자 집합으로 변환되어 디스크에 저장됩니다.

1. 테이블 생성 시 설정된 문자 3. Character_set_database 문자 집합

4. 데이터 쿼리:

서버는 디스크에 저장된 문자 집합의 데이터를 Character_set_results 문자 집합으로 변환하고 클라이언트로 반환한 다음

분석합니다

1. jdbc는 CharacterEncoding=utf8을 설정하지 않으며 서버는 Character_set_server입니다. latin1, jdbc는 latin1 문자셋으로 데이터베이스에 연결하고, 데이터베이스 서버는 latin1을 utf8로 변환한 후 디스크에 저장합니다(character_set_connection에서 지정한 문자셋과 생성 테이블이 모두 utf8이기 때문에). 이로 인해 문자 깨짐 현상이 발생합니다

2. jdbc가 CharacterEncoding=utf8을 설정하지 않았거나, 서버 Character_set_server가 utf8이거나, jdbc가 CharacterEncoding=utf8을 설정하고, jdbc가 utf8 문자 세트 데이터베이스와 연결되어 있고, 데이터베이스 서버가 utf8로 디스크에 저장한 다음 데이터는 정상입니다

위 내용은 Java에서 jdbc를 통해 데이터베이스에 연결할 때 중국어 문자가 깨지는 문제에 대한 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제