현재 위치: > 최신 기사 목록> mysqli :: set_charset 문자 세트를 설정 한 후 데이터베이스에 데이터를 작성할 때 문자가 오류를 유발하지 않도록하려면 어떻게해야합니까?

mysqli :: set_charset 문자 세트를 설정 한 후 데이터베이스에 데이터를 작성할 때 문자가 오류를 유발하지 않도록하려면 어떻게해야합니까?

gitbox 2025-09-04

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 독립적 인 코드 예제</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"프로그램 환경을 초기화하십시오...&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-variable">$version</span></span><span> = </span><span><span class="hljs-title function_ invoke__">phpversion</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"PHP버전:"</span></span><span> . </span><span><span class="hljs-variable">$version</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

데이터베이스 작업에 PHP의 MySQLI 확장 기능을 사용할 때 캐릭터 세트 문제는 데이터 작성에서 오류를 유발하거나 오류를 일으킬 가능성이 가장 높은 요인 중 하나입니다. mysqli :: set_charset 은 데이터베이스 연결 문자 세트를 설정하는 공식 권장 방법이지만 데이터가 데이터베이스에 올바르게 기록되도록 설정 한 후에도 일부 세부 사항에주의를 기울여야합니다.

1. 문자 세트를 설정하기위한 기본 방법

 <span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"연결이 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// 문자를 설정하십시오 utf8mb4</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8mb4"</span></span><span>)) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"문자 세트를 설정하지 못했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error);
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"문자 세트는 성공적으로 세트입니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>();
</span></span>

여기서 UTF8MB4는 이모티콘과 같은 특수 문자를 포함하여 전체 유니 코드를 지원하기 때문에 권장 문자 세트입니다.

2. 데이터베이스 테이블 및 필드 문자 세트가 일관성이 있는지 확인하십시오.

연결 문자 세트가 올바르게 설정 되더라도 데이터베이스 테이블 또는 필드의 문자 세트가 다르면 여전히 garbled가 나타납니다. 체크리스트 및 필드의 문자 세트는 SQL을 통해 쿼리 할 수 ​​있습니다.

 <span><span><span class="hljs-keyword">SHOW</span></span><span> </span><span><span class="hljs-keyword">CREATE</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> your_table;
</span></span>

UTF8MB4 로 설정된 테이블 및 필드 문자를 균일하게 설정하는 것이 좋습니다.

 <span><span><span class="hljs-keyword">ALTER</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> your_table </span><span><span class="hljs-keyword">CONVERT</span></span><span> </span><span><span class="hljs-keyword">TO</span></span><span> </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8mb4 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8mb4_unicode_ci;
</span></span>

3. 준비된 진술을 사용하십시오

직접 스 플라이 싱 SQL 스트링은 문자 인코딩 문제 또는 SQL 주입 위험이 발생하기 쉽습니다. 전처리 명세서를 사용하여 데이터가 올바른 인코딩으로 작성되었는지 확인하십시오.

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO your_table (name, content) VALUES (?, ?)"</span></span><span>);
</span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-string">"사용자를 테스트하십시오"</span></span><span>;
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-string">"특수 문자가 포함 된 일부 내용은 다음과 같습니다 ??"</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"ss"</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>, </span><span><span class="hljs-variable">$content</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>

MySQLI는 연결 문자 세트에 따라 매개 변수를 자동으로 처리하여 문자의 위험이 줄어 듭니다.

4. 웹 페이지와 PHP 파일 인코딩이 일관성이 있는지 확인

  • PHP 파일 자체는 BOM없이 UTF-8으로 저장해야합니다.

  • HTML 페이지는 문자 세트를 선언해야합니다.

 <span><span><span class="hljs-tag">&lt;<span class="hljs-name">meta</span></span></span><span> </span><span><span class="hljs-attr">charset</span></span><span>=</span><span><span class="hljs-string">"UTF-8"</span></span><span>&gt;
</span></span>

이러한 방식으로, 사용자가 입력 한 데이터, PHP에 의해 처리 된 문자열 및 데이터베이스에 작성된 문자 세트는 일관성을 유지합니다.

5. 요약

  1. $ mysqli-> set_charset ( "utf8mb4")을 사용하여 연결 문자를 설정하십시오.

  2. 데이터베이스, 테이블 및 필드 문자 세트가 연결 문자 세트와 일치하는지 확인하십시오.

  3. 전처리 문을 사용하여 데이터를 삽입하십시오.

  4. PHP 파일과 페이지가 UTF-8으로 인코딩되어 있는지 확인하십시오.

다음 단계를 따라 데이터베이스에 데이터를 가장 많이 작성할 때 문자 오류 또는 차량 코드를 피하십시오.