현재 위치: > 최신 기사 목록> json_encode 및 mysqli :: get_charset과 함께 인코딩 문제를 처리하는 방법?

json_encode 및 mysqli :: get_charset과 함께 인코딩 문제를 처리하는 방법?

M66 2025-06-06

PHP 개발에서 중국자는 데이터베이스 및 프론트 엔드 데이터 전송을 처리 할 때 일반적인 문제입니다. 특히 mysqli :: get_charsetjson_encode를 사용할 때, 문자 세트가 올바르게 구성되지 않으면 중국 내용이 매달려있을 수 있습니다. 이 기사는이 문제를 해결하는 방법을 설명하고 MySQL 데이터베이스와 상호 작용할 때 중국어를 올바르게 전달할 수 있도록합니다.

1. 문자 세트의 선택 및 구성

먼저, 데이터베이스 연결이 연결되면 MySQL이 한자를 올바르게 처리 할 수 ​​있도록 문자 세트가 UTF-8로 올바르게 설정되어 있는지 확인하십시오. MySQLI 확장 기능을 사용하여 데이터베이스에 연결 한 다음 MySQLI :: get_charset을 사용하여 현재 문자 세트 설정을 얻습니다. 캐릭터 세트가 UTF-8인지 확인하는 것은 Breadbled 문제를 해결하는 핵심 단계입니다.

샘플 코드 :

 <?php
// 데이터베이스에 연결하십시오
$mysqli = new mysqli('localhost', 'root', '', 'test_db');

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

// 문자를 설정하십시오 UTF-8
$mysqli->set_charset('utf8');

// 현재 문자 세트를 가져옵니다
$current_charset = $mysqli->get_charset();
echo "현재 문자 세트: " . $current_charset->charset;

// 데이터베이스 쿼리를 수행하고 중국 데이터를 출력하십시오
$query = "SELECT name FROM users WHERE id = 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();

// 출력 쿼리 결과
echo json_encode($row);
?>

2. JSON_ENCODE를 사용할 때는 차량 코드를 피하십시오

데이터베이스에서 중국 데이터를 쿼리하고 JSON_ENCODE를 통해 인코딩하면 문자 세트가 올바르게 설정되지 않으면 한자가 해제 될 수 있습니다. 이를 피하기 위해 JSON_UNESCAPED_UNICODE 매개 변수를 사용하여 중국어가 탈출되지 않도록 할 수 있습니다.

개선 된 코드 예 :

 <?php
// 데이터베이스에 연결하십시오
$mysqli = new mysqli('localhost', 'root', '', 'test_db');

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

// 문자를 설정하십시오 UTF-8
$mysqli->set_charset('utf8');

// 현재 문자 세트를 가져옵니다
$current_charset = $mysqli->get_charset();
echo "현재 문자 세트: " . $current_charset->charset;

// 데이터베이스 쿼리를 수행하고 중국 데이터를 출력하십시오
$query = "SELECT name FROM users WHERE id = 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();

// 사용 json_encode 출력 중국어,한자가 탈출되지 않도록하십시오
echo json_encode($row, JSON_UNESCAPED_UNICODE);
?>

3. 공통 문자 세트 구성

사용중인 데이터베이스 테이블 문자 세트가 UTF-8이 아닌 경우 문자 변환 문제가 발생할 수 있습니다. 개발 환경 전체에 걸쳐있는 차량 코드가 없는지 확인하려면 다음 항목을 확인하는 것이 좋습니다.

  • 데이터베이스의 문자 세트 : UTF8MB4 또는 UTF8을 사용하십시오.

  • 데이터 테이블의 문자 세트 : 다음 SQL 쿼리는 테이블의 문자 세트를보고 수정하는 데 사용될 수 있습니다.

     SHOW CREATE TABLE users;
    ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  • 연결된 문자 세트 : PHP에서 mysqli-> set_charset ( 'utf8') 에 의해 설정된 문자를 설정하십시오.

4. 중국어가 달린 코드를 해결하는 다른 방법

위 구성 외에도 브라우저가 중국 데이터를 올바르게 디코딩 할 수 있는지 확인하는 것도 중요합니다. 일반적인 관행은 웹 페이지의 <head> 태그에 다음 메타 태그를 추가하는 것입니다.

 <meta charset="UTF-8">

이를 통해 브라우저가 한자를 올바르게 구문 분석하고 코드를 방해하지 않도록합니다.

요약

중국어 처리를 위해 json_encode 와 함께 mysqli :: get_charset을 사용하는 경우, 문자 세트를 올바르게 구성하는 것이 차량 코드 문제를 피하는 열쇠입니다. 데이터베이스 연결 문자 세트가 UTF8 또는 UTF8MB4 로 설정되어 있는지 확인하고 JSON_ENCODE를 사용할 때 JSON_UNESCAPED_UNICODE 매개 변수를 추가하여 중국어의 문제를 효과적으로 피할 수 있습니다.

이 기사의 도입을 통해 MySQLIJSON_ENCODE를 사용할 때 중국어가 달린 코드로 인한 문제를 피하는 데 도움이됩니다.