현재 위치: > 최신 기사 목록> mysqli :: get_charset을 사용하여 영어가 아닌 문자가 올바르게 처리되는지 확인하십시오.

mysqli :: get_charset을 사용하여 영어가 아닌 문자가 올바르게 처리되는지 확인하십시오.

M66 2025-05-25

MySQL 데이터베이스를 운영하기 위해 PHP를 사용하는 경우, 캐릭터 인코딩 문제는 종종 개발자에게 가장 어려운 문제 중 하나입니다. 특히 중국어, 일본어 및 한국과 같은 영어 이외의 캐릭터가 포함될 때. 많은 사람들이 데이터베이스를 삽입하거나 쿼리 한 후 중국어가 달린 코드를 만듭니다. 이는 종종 문자 세트가 올바르게 설정되지 않기 때문입니다.

이 기사에서는 MySQLI :: get_charset 메소드를 사용하여 현재 MySQLI 연결의 문자 세트 설정을 확인하여 영어 이외의 문자 (예 : 중국어)가 올바르게 인코딩 될 수 있도록하는 방법을 설명합니다.

캐릭터 세트가 중요한 이유는 무엇입니까?

MySQL은 Latin1 , UTF8 , UTF8MB4 등과 같은 여러 문자 세트를 지원합니다. 웹 사이트에 중국 내용이 포함되어있는 경우 이모티콘 및 거의 모든 유니 코드 문자와 호환되므로 UTF8MB4를 사용하는 것이 좋습니다.

그러나 데이터베이스 수준에서 문자를 설정하는 것만으로는 충분하지 않으며 PHP와 데이터베이스 사이의 일관된 문자를 설정해야합니다. 그렇지 않으면 데이터베이스로 전송 된 데이터가 도착하기 전에 잘못 인코딩되어 코드가 나빠질 수 있습니다.

mysqli :: get_charset의 사용은 무엇입니까?

mysqli :: get_charset 메소드는 현재 연결에 사용되는 문자 세트 정보를 보는 데 사용될 수 있으며 문자 세트 세부 정보가 포함 된 객체를 반환 할 수 있습니다. 이 방법을 사용하면 연결 코드를 작성하여 연결이 올바르게 설정되도록 할 수 있습니다.

샘플 코드

 <?php
// 데이터베이스 연결 구성
$host = 'localhost';
$user = 'dbuser';
$password = 'dbpassword';
$database = 'testdb';

// 만들다 mysqli 물체
$mysqli = new mysqli($host, $user, $password, $database);

// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
    die('연결이 실패했습니다: ' . $mysqli->connect_error);
}

// 문자를 설정하십시오 utf8mb4(추천 지원 중국어 Emoji)
if (!$mysqli->set_charset('utf8mb4')) {
    die('오류 설정 문자 세트: ' . $mysqli->error);
}

// 사용 get_charset 현재 문자 세트를 확인하십시오
$charset_info = $mysqli->get_charset();

echo "현재 문자 세트: " . $charset_info->charset . "<br>";
echo "문자 세트 설명: " . $charset_info->comment . "<br>";
echo "문자 세트 디렉토리: " . $charset_info->dir . "<br>";
echo "최대 바이트 길이: " . $charset_info->max_length . "<br>";

// 중국 데이터 삽입 테스트
$sql = "INSERT INTO test_table (content) VALUES ('한자 테스트')";
if ($mysqli->query($sql)) {
    echo "중국 데이터를 성공적으로 삽입했습니다。<br>";
} else {
    echo "삽입 실패: " . $mysqli->error . "<br>";
}

// 데이터베이스의 읽기 데이터를 테스트합니다
$result = $mysqli->query("SELECT content FROM test_table ORDER BY id DESC LIMIT 1");
if ($result) {
    $row = $result->fetch_assoc();
    echo "내용을 읽으십시오: " . $row['content'] . "<br>";
} else {
    echo "쿼리가 실패했습니다: " . $mysqli->error . "<br>";
}

// 연결을 닫으십시오
$mysqli->close();
?>

주목해야 할 것

  1. 데이터베이스 테이블 및 필드 문자 세트는 일관성이 있어야합니다 <br> 테이블 및 필드의 문자 세트도 UTF8MB4 인지 확인하십시오. SQL을 다음과 같이 사용할 수 있습니다.

     SHOW CREATE TABLE test_table;
    

    그렇지 않은 경우 Alter Table을 통해 일관된 문자로 변경할 수 있습니다.

  2. 테스트 페이지 코딩 <br> PHP 페이지 자체가 UTF-8 인코딩으로 저장되고 올바른 컨텐츠 유형이 HTTP 응답 헤더에 선언되어 있는지 확인하십시오.

     header('Content-Type: text/html; charset=utf-8');
    
  3. mysqli_report를 사용하여 디버깅을 용이하게하십시오 <br> MySQLI보고 기능은 숨겨진 오류를 잡을 수 있도록 개발 중에 활성화 될 수 있습니다.

     mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);