현재 위치: > 최신 기사 목록> 문자 인코딩이 설정되지 않으므로 결과가 나옵니다

문자 인코딩이 설정되지 않으므로 결과가 나옵니다

M66 2025-05-31

PHP에서 MySQL 데이터베이스를 사용할 때는 종종 MySQLI_Result 함수에 의해 리턴 된 쿼리 결과에서 차량 코드 문제가 발생합니다. 일반적으로, 차량 문제는 캐릭터 인코딩이 올바르게 설정되지 않아서 발생합니다. 이 기사는 UNSET 캐릭터 인코딩이 왜 쿼리 결과를 유발하고 솔루션을 제공하는지 설명합니다.

1. 캐릭터 인코딩이란 무엇입니까?

캐릭터 인코딩은 캐릭터가 컴퓨터에 저장되고 표현되는 방식입니다. 각 언어의 문자 세트는 올바르게 표시되도록 명확하게 인코딩되어야합니다. 예를 들어, UTF-8 인코딩은 다양한 언어로 문자를 지원할 수있는 널리 사용되는 문자 세트입니다. 문자 인코딩이 일치하지 않으면 시스템이 텍스트를 올바르게 식별하고 표시 할 수 없으므로 코드가 나옵니다.

2. MySQL 및 캐릭터 인코딩

MySQL 데이터베이스에서 각 데이터베이스, 테이블, 필드 및 연결에는 자체 문자 인코딩이있을 수 있습니다. 데이터베이스 연결의 문자 인코딩이 데이터베이스 또는 테이블의 문자 인코딩과 일치하지 않으면 문제가 발생할 수 있습니다.

mysqli_result 함수를 사용하여 쿼리 결과를 얻을 때 MySQL의 기본 문자 세트는 우리가 기대하는 문자 세트가 아닐 수 있습니다. 특히, 데이터베이스 및 테이블의 문자 세트가 올바르게 설정되지 않거나 데이터베이스 연결의 문자 세트가 올바르게 설정되지 않으면 차량 코드가 발생하기 쉽습니다.

3. mysqli_result 함수의 작동 방식

mysqli_result 는 MySQL 쿼리의 결과를 얻는 PHP의 함수입니다. mysqli_query를 사용하여 SQL 쿼리를 실행하면 mysqli_result 객체를 반환합니다. 그런 다음 개체의 fetch_assoc () , fetch_row () 및 기타 메소드를 사용하여 쿼리 결과를 얻을 수 있습니다.

예를 들어:

 $conn = mysqli_connect('localhost', 'username', 'password', 'database');
$result = mysqli_query($conn, "SELECT * FROM users");

while($row = mysqli_fetch_assoc($result)) {
    echo $row['name'];
}

위 코드에서 쿼리 결과의 필드 이름 에 중국어가 포함된다고 가정하면 문자 인코딩이 올바르게 설정되지 않으면 쿼리 결과의 한자가 차단 될 수 있습니다.

4. 왜 캐릭터 인코딩으로 설정되지 않아 코드가 나오는가?

기본적으로 MySQL 연결의 문자 세트는 MySQL 서버의 구성에 의해 결정됩니다. MySQL 서버의 문자 세트가 처리하려는 데이터 인코딩과 일치하지 않으면 쿼리 결과의 문자가 잘못 해독되어 코드가 나올 수 있습니다.

예를 들어, 중국어가 MySQL 데이터베이스에 저장되고 테이블의 문자 세트가 UTF-8이라고 가정합니다. 그러나 PHP 스크립트가 데이터베이스에 연결할 때 LATIN1 (즉, ISO-8859-1) 문자를 사용하는 경우 데이터베이스에서 반환 한 데이터는 UTF-8이 아닌 LATIN1 인코딩에서 디코딩됩니다. 두 인코딩이 다르기 때문에 반환 된 중국어가 멍청하게 나타납니다.

5. 차량 코드의 문제를 해결하는 방법은 무엇입니까?

문자 인코딩 문제를 해결하려면 데이터베이스 연결이 연결될 때 올바른 문자 인코딩이 설정되어 있는지 확인해야합니다. 문자 인코딩은 다음과 같은 방식으로 설정할 수 있습니다.

연결 문자 인코딩을 설정합니다

데이터베이스 연결을 설정 한 후 MySQLI_SET_CHARET () 함수를 사용하여 문자 인코딩을 설정하십시오.

 $conn = mysqli_connect('localhost', 'username', 'password', 'database');
mysqli_set_charset($conn, 'utf8'); // 캐릭터 인코딩을 설정하십시오UTF-8

이렇게하면 데이터베이스 연결이 UTF-8 문자를 사용하여 인코딩되어 문제를 피할 수 있습니다.

데이터베이스 및 테이블의 문자 인코딩을 확인하십시오

또한 데이터베이스 및 테이블의 문자 인코딩도 UTF-8로 설정되어 있는지 확인해야합니다. 데이터베이스 및 테이블의 문자 세트는 다음 SQL 문으로 점검하고 수정할 수 있습니다.

  1. 데이터베이스 문자 세트보기 :

 SHOW CREATE DATABASE database_name;
  1. 데이터베이스 문자 세트 수정 :

 ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
  1. 테이블의 문자 세트를보십시오.

 SHOW TABLE STATUS FROM database_name;
  1. 테이블의 문자 세트를 수정하십시오.

 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

클라이언트 문자 인코딩을 설정합니다

경우에 따라 다음 SQL 문을 실행하여 클라이언트 문자를 설정해야 할 수도 있습니다.

 SET NAMES 'utf8';

이렇게하면 쿼리가 실행될 때 클라이언트와 MySQL 서버 간의 문자 인코딩이 일관되게됩니다.

6. 요약

BREBLED 문제는 일반적으로 MySQLI_Result 함수를 사용하여 쿼리 결과를 얻을 때 일치하지 않는 문자 인코딩 설정으로 인해 발생합니다. 문자 인코딩이 올바르게 설정되지 않으면 MySQL은 기본 문자 세트 (일반적으로 LATIN1)를 사용하여 쿼리 결과가 나옵니다. 이 문제를 피하려면 다음을 확인해야합니다.

  1. 데이터베이스에 연결할 때 올바른 문자 인코딩 (예 : UTF-8)을 설정하십시오.

  2. 데이터베이스, 테이블 및 클라이언트의 문자 세트가 일관성이 있는지 확인하십시오.

  3. 여전히 문제가 발생하면 문자 인코딩의 일관성을 보장하기 위해 이름 설정 'UTF8' 을 설정하려고합니다.

이러한 방법을 통해 쿼리 결과를 효과적으로 피하고 데이터를 올바르게 표시하도록 검색 된 코드를 보장 할 수 있습니다.