현재 위치: > 최신 기사 목록> mysql cli에서 mysqli :: get_charset과 'character_set_%'와 같은 변수 표시

mysql cli에서 mysqli :: get_charset과 'character_set_%'와 같은 변수 표시

M66 2025-06-02

PHP를 사용하여 MySQL 데이터베이스를 조작 할 때 특히 중국어 또는 다른 멀티 바이트 문자와 관련하여 캐릭터 세트 설정에주의를 기울여야합니다. 부적절한 문자 세트 설정으로 인해 코드 또는 데이터 저장 오류가 발생할 수 있습니다. 문자 세트의 경우 PHP의 MySQLI 확장 기능은 MySQLI :: get_charset 함수를 제공하고 MySQL Command Line 도구 (CLI)에서는 일반적으로 '문자 _set_%'와 같은 표시 변수를 사용하여 관련 변수를보십시오.

이 기사는 개발자가 자신의 용도와 차이를 이해하도록 돕기 위해 두 가지의 깊이있는 차이점을 분석합니다.

1 ??? mysqli :: get_charset 란 무엇입니까?

mysqli :: get_charset () 은 PHP의 MySQLI 객체의 메소드이며 현재 연결의 문자 세트 정보를 얻는 데 사용됩니다.
다음 속성을 포함하는 객체를 반환합니다.

  • charset : UTF8MB4 와 같은 현재 연결된 문자 세트 이름

  • Collation : Collation (예 : UTF8MB4_GENERAL_CI

  • DIR : 문자 세트 정의 파일의 디렉토리 (보통 비어 있음)

  • min_length , max_length , 번호 , 상태 : 내부적으로 사용 된 문자 세트 정보

예를 들어, 코드를 사용하여 현재 연결 문자 세트를 가져옵니다.

 <?php
$mysqli = new mysqli('m66.net', 'user', 'password', 'database');

if ($mysqli->connect_error) {
    die('연결이 실패했습니다: ' . $mysqli->connect_error);
}

$charsetInfo = $mysqli->get_charset();
echo '현재 문자 세트: ' . $charsetInfo->charset . PHP_EOL;
echo '정렬 규칙: ' . $charsetInfo->collation . PHP_EOL;

$mysqli->close();
?>

이 방법은 현재 PHP MySQLI Connection 객체의 문자 세트 설정을 목표로하며, 이는 MySQLI_SET_CHARET () 설정 또는 기본값과 동일합니다.

2 ?? '문자 _set_%'와 같은 쇼 변수는 무엇입니까?

MySQL CLI 또는 기타 SQL 도구에서
다음 명령을 통해 현재 MySQL 서버의 문자 세트 관련 변수를 볼 수 있습니다.

 SHOW VARIABLES LIKE 'character_set_%';

여기에는 다음과 같은 일련의 구성이 나와 있습니다.

  • 문자_SET_CLIENT : 클라이언트가 서버에 보낸 문자 세트

  • 문자_set_connection : 서버 구문 분석 문의 문자 세트

  • arraince_set_database : 현재 기본 데이터베이스의 문자 세트

  • 문자_SET_RESULTS : 쿼리 결과의 문자 세트는 서버에서 반환합니다.

  • arribute_set_server : 서버 기본 문자 세트

  • 문자_SET_SYSTEM : 시스템 메타 데이터 문자 세트

이러한 변수에는 PHP 연결뿐만 아니라 서버 레벨세션 수준 문자 세트가 모두 포함됩니다.

예를 들어 CLI에서 실행됩니다.

 mysql> SHOW VARIABLES LIKE 'character_set_%';

당신은 볼 수 있습니다 :

variable_name
문자 _set_client UTF8MB4
문자 _set_connection UTF8MB4
문자_SET_DATABASE UTF8MB4
문자 _set_results UTF8MB4
문자 _set_server UTF8MB4
문자 _set_system UTF8

이 정보는 현재 MySQL 인스턴스 및 세션의 문자 세트 구성을보다 완전히 반영합니다.

3 ???? 핵심 차이

비교 지점 mysqli :: get_charset '문자 _set_%'와 같은 변수 표시
개체를 봅니다 php의 mysqli 연결 객체 MySQL 서버 구성 및 세션 매개 변수
범위를 얻으십시오 캐릭터 세트와 현재 연결된 종류 서버 및 세션의 다중 문자 세트 변수
얻는 방법 PHP 방법 SQL 문
사용 MySQLI 객체에서 사용하는 문자 세트를 확인하십시오 MySQL 레벨 문자 세트보기 및 조정 (클라이언트, 연결, 데이터베이스 등)
영향의 범위 이 PHP 연결에만 영향을 미칩니다 글로벌/현재 세션, 다중 클라이언트 공유

간단히 말해서, mysqli :: get_charset () 는 PHP의 한쪽 끝입니다.
'문자 _set_%'와 같은 변수 표시는 데이터베이스 서버 전체입니다.

4 ?? 둘 다 중요한 이유는 무엇입니까?

다국어 또는 다중 지역 지원 응용 프로그램을 개발할 때
클라이언트 (PHP), 연결, 데이터베이스 및 서버의 문자 세트가 일관성이 있는지 확인하십시오.
차량 코드를 피하는 것은 핵심입니다.

예를 들어:

  • php에서 mysqli_set_charset ( 'utf8mb4')을 설정할 수 있습니다.
    그러나 데이터베이스의 arribution_set_database는 여전히 latin1 입니다.
    이 경우 저장된 데이터에는 문제가있을 수 있습니다.

  • mysqli :: get_charset () 을 통해 PHP 연결 계층이 성공적으로 설정되어 있는지 확인할 수 있습니다.
    또한 '문자 _set_%'와 같은 표시 변수를 통해 서버 및 데이터베이스의 기본 설정을 확인할 수 있습니다.

이 둘을 결합 하여만 캐릭터 세트 링크를 완전히 파악할 수 있습니다.

결론적으로

mysqli :: get_charset ()'arribute_set_%'와 같은 변수를 표시합니다.
개발자가 캐릭터 세트 문제를 해결할 수있는 두 가지 강력한 도구입니다.
하나는 클라이언트 (PHP) 측면에 있고 하나는 서버 (MySQL) 측면에 있습니다.

둘 사이의 차이점과 관계를 이해하십시오.
고품질의 차량이없는 응용 프로그램을 작성하는 데 도움이 될뿐만 아니라
또한 시스템 간 데이터 흐름 문제를 해결할 때 더 많은 단서를 제공 할 수 있습니다.

기억하십시오 : 문자 세트 일관성은 체계적인 프로젝트입니다.
PHP 또는 MySQL의 한쪽에서 구성 문제뿐만 아니라