PHP 개발에서 MySQLI Extension은 널리 사용되는 데이터베이스 인터페이스로 개발자가 MySQL 데이터베이스를 통해 데이터와 상호 작용할 수 있습니다. 데이터의 올바른 저장 및 쿼리를 보장하기 위해 문자 세트의 설정이 매우 중요한 부분입니다. 경우에 따라 mysqli :: get_charset 함수를 사용하여 현재 문자 세트를 보면 표시된 문자 세트가 설정 한 문자 세트와 다를 수 있습니다. 이게 왜? 우리는이 기사에서 이것에 대해 논의 할 것입니다.
mysqli :: get_charset은 mysqli 클래스의 현재 mysql 연결의 문자 세트를 반환하는 메소드입니다. 쿼리를 실행하면 문자 세트는 일반적으로 데이터 액세스 및 표시에 영향을 미칩니다. 따라서 현재 연결된 문자 세트를 이해하는 것이 매우 중요합니다.
PHP에서 MySqli :: get_charset 의 사용은 매우 간단합니다.
<?php
// 데이터베이스 연결을 만듭니다
$mysqli = new mysqli("localhost", "user", "password", "database");
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 현재 연결된 문자 세트를 얻으십시오
$current_charset = $mysqli->get_charset();
echo "현재 문자 세트: " . $current_charset->character_set_name;
?>
위의 코드를 실행하면 get_charset은 문자 세트 정보가 포함 된 객체를 반환합니다.
실제 개발에서 mysqli :: get_charset 함수를 사용하여 본 문자 세트 가 설정 한 문자 세트 와 일치하지 않는 상황이 발생할 수 있습니다. 이것은 일반적으로 몇 가지 이유로 인해 발생합니다.
데이터베이스 연결을 설정할 때 MySQL은 기본적으로 설정된 Latin1 문자를 사용합니다 (다른 문자 세트가 설정되지 않은 경우). 코드에서 mysqli_set_charset을 사용하여 UTF8 로 설정하더라도 Database Connection 문자 세트가 올바르게 설정되지 않은 경우 MySQLI :: get_charset에서 반환 한 문자 세트가 여전히 기본 Latin1 일 수 있습니다.
문자 세트의 올바른 설정을 보장하려면 다음 코드를 사용하여 문자 세트가 올바른지 확인할 수 있습니다.
<?php
// 데이터베이스 연결을 만듭니다
$mysqli = new mysqli("localhost", "user", "password", "database");
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 캐릭터 세트를 설정하십시오
$mysqli->set_charset("utf8");
// 현재 연결된 문자 세트를 얻으십시오
$current_charset = $mysqli->get_charset();
echo "현재 문자 세트: " . $current_charset->character_set_name;
?>
이런 식으로 MySQLI :: get_charset에 의해 반환 된 문자 세트는 set_charset 설정과 일치해야합니다.
또 다른 일반적인 이유는 데이터베이스의 기본 문자 세트가 연결 문자 세트와 일치하지 않기 때문입니다. 예를 들어, 데이터베이스는 기본적으로 LATIN1을 사용할 수 있으며 연결할 때 UTF8을 설정합니다. 이 경우 다른 문자 세트가 표시 될 수 있습니다.
다음 SQL 문을 통해 데이터베이스의 문자 세트 설정을 확인할 수 있습니다.
SHOW VARIABLES LIKE 'character_set%';
데이터베이스 및 연결에 대한 문자 세트 구성을 반환합니다. 데이터베이스의 문자 세트와 연결이 일관되도록 하여이 불일치 문제를 피할 수 있습니다.
경우에 따라 프로그램은 MySQLI 와 PDO를 모두 사용하여 데이터베이스에 연결할 수 있습니다. 이 라이브러리는 다른 기본 문자 세트를 사용할 수 있으므로 mysqli :: get_charset 에서 반환 한 문자 세트가 pdo를 통해 설정된 문자 세트 세트와 다를 수 있습니다. 이 문제를 피하기 위해 통합 데이터베이스 연결 방법을 사용하고 문자 세트가 일관되도록하는 것이 좋습니다.
mysqli :: get_charset을 사용하여 문자 세트를 볼 때, 표시된 문자 세트는 일반적으로 데이터베이스 연결 문자 세트의 부적절한 설정 또는 데이터베이스 자체의 기본 문자 세트가 연결 문자 세트와 일치하지 않기 때문에 설정 한 것과 다릅니다. 이 문제를 해결하는 핵심은 데이터베이스에 연결 한 후 문자 세트가 올바르게 설정되고 데이터베이스와 연결된 문자 세트가 일치하는지 확인하는 것입니다.