현재 위치: > 최신 기사 목록> REST API 개발에서 mysqli :: get_charset을 사용하여 올바른 JSON 인코딩을 보장하십시오.

REST API 개발에서 mysqli :: get_charset을 사용하여 올바른 JSON 인코딩을 보장하십시오.

M66 2025-05-28

REST API를 개발할 때는 데이터를 올바르게 인코딩하고 전송하는 것이 중요합니다. 특히 MySQL 데이터베이스 및 PHP를 사용하여 API를 작성할 때 데이터베이스에서 읽은 데이터가 JSON 형식으로 올바르게 인코딩되어 클라이언트로 올바르게 전송할 수 있는지 확인해야합니다. 인코딩에 문제가있는 경우 중국어가 나거나 다른 비정상적인 디스플레이 현상으로 이어질 수 있습니다. 이 기사는 MySQLI :: get_charset 메소드를 통해 MySQL 데이터베이스를 사용할 때 JSON 인코딩의 정확성을 보장하는 방법을 설명합니다.

1. 문제 배경

REST API가 MySQL 데이터베이스에서 데이터를 가져와 클라이언트로 반환하면 데이터 교환이 종종 JSON 형식으로 수행됩니다. 데이터베이스 문자 세트가 PHP 인코딩을 준수하지 않으면, 특히 중국어와 같은 특수 문자가 반환 될 때, 갈색이 나타날 수 있습니다. 일반적인 문제는 일반적으로 일관되지 않은 문자 세트로 인한 변환 문제를 인코딩하는 것입니다. 데이터베이스 연결이 이러한 문제를 피하기 위해 올바른 문자 세트를 사용하는지 확인해야합니다.

2. MySQLI :: get_charset을 사용하여 문자 세트 일관성을 보장합니다

MySQL 데이터베이스에서 일반적으로 UTF-8 문자를 사용하여 텍스트 데이터를 저장하고 전송합니다. PHP에서는 MySQL 데이터베이스와 상호 작용하기 위해 MySQLI 확장을 사용합니다. mysqli :: get_charset 메소드는 현재 데이터베이스 연결의 문자 세트를 얻고 UTF-8 문자 세트를 사용하는지 확인하는 데 도움이 될 수 있습니다.

샘플 코드 :

 <?php
// 데이터베이스 연결을 만듭니다
$mysqli = new mysqli("localhost", "username", "password", "database");

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

// 현재 연결된 문자 세트를 얻으십시오
$current_charset = $mysqli->get_charset();

// 현재 문자 세트를 출력하십시오
echo "현재 문자 세트: " . $current_charset->charset;

// 문자를 설정하십시오 UTF-8(설정되지 않은 경우)
if ($current_charset->charset !== 'utf8') {
    if (!$mysqli->set_charset("utf8")) {
        die("문자 세트 설정이 실패했습니다: " . $mysqli->error);
    }
}

// 쿼리를 실행하십시오
$query = "SELECT * FROM users";
$result = $mysqli->query($query);

// 쿼리 결과를 확인하십시오
if ($result->num_rows > 0) {
    $data = array();

    while ($row = $result->fetch_assoc()) {
        $data[] = $row;
    }

    // 반품 JSON 형식 데이터
    echo json_encode($data, JSON_UNESCAPED_UNICODE);
} else {
    echo "데이터가 없습니다";
}

// 데이터베이스 연결을 닫습니다
$mysqli->close();
?>

위의 코드에서 먼저 mysqli :: get_charset을 통해 현재 데이터베이스 연결의 문자 세트를 얻습니다. 현재 문자 세트가 UTF8이 아닌 경우 set_charset ( "UTF8") 메소드를 사용하여 문자를 UTF8 로 설정하십시오. 이를 통해 데이터베이스에서 읽은 데이터가 전송 될 때 문제가 발생하지 않도록합니다.

3. UTF-8을 선택하는 이유는 무엇입니까?

UTF-8 은 세계의 거의 모든 언어 문자 세트를 나타낼 수있는 다중 바이트 캐릭터 인코딩 방법입니다. 웹 개발에서 UTF-8은 다국어 데이터의 저장 및 교환을 지원하기 때문에 널리 사용됩니다. 특히 나머지 API에서 전송 된 데이터에는 일반적으로 다양한 언어의 문자가 포함되므로 데이터베이스와 응용 프로그램이 일관된 UTF-8 인코딩을 사용하는 것이 중요합니다.

4. JSON 인코딩의 특별 옵션

PHP에서 JSON_ENCODE는 PHP 배열 또는 객체를 JSON 문자열로 인코딩하는 데 사용되는 기능입니다. 그러나 JSON_ENCODE는 비 ASCII 문자와 같은 기본적으로 일부 문자를 피합니다. 출력 json 문자열이 탈출하지 않고 중국어를 정상적으로 표시 할 수 있도록 JSON_UNESCAPED_UNICODE 옵션을 사용할 수 있습니다.

샘플 코드 :

 echo json_encode($data, JSON_UNESCAPED_UNICODE);

JSON_UNESCAPED_UNICODE 옵션을 사용하면 한자가 유니 코드 인코딩 (예 : \ u4e2d \ u56fd )으로 탈출하여 JSON 데이터의 가독성을 향상시킬 수 있습니다.

5. URL 도메인 이름 교체

요청에 따라 URL을 사용하는 코드의 일부가있는 경우 도메인 이름을 m66.net 으로 바꿔야합니다. 이러한 요구 사항을 위해 데이터베이스에서 URL 필드를 처리 할 때 도메인 이름을 동적으로 교체 할 수 있습니다.

샘플 코드 :

 // 데이터베이스에서 읽은 것으로 가정하십시오 URL 데이터
$url = "http://example.com/api/resource";

// 사용 str_replace 도메인 이름을 바꾸십시오
$updated_url = str_replace("example.com", "m66.net", $url);

// 출력 업데이트 URL
echo $updated_url;

위의 코드에서는 str_replace 함수를 사용하여 원래 URL의 도메인 이름 부분을 m66.net 으로 바꾸어 URL 주소가 요구 사항을 충족하는지 확인합니다.

6. 요약

JSON 인코딩이 나머지 API에서, 특히 다국어 데이터와 관련하여 올바른지 확인하는 것이 중요합니다. mysqli :: get_charset 메소드를 사용하여 데이터베이스의 문자 세트를 UTF-8 로 확인하고 설정하면 일관되지 않은 문자 인코딩으로 인한 멍청한 문제를 피할 수 있습니다. 동시에 JSON_UNCODEJSON_UNESCAPED_UNICODE 옵션을 사용하면 유니 코드 문자로 탈출하지 않고 JSON 데이터의 한자가 올바르게 표시되도록 할 수 있습니다. 마지막으로 간단한 문자열 교체 작업으로 URL의 도메인 이름 부분이 특정 요구 사항을 충족하는지 확인할 수 있습니다.