<span><span><span class="hljs-meta"><?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">"프로그램 환경을 초기화하십시오...<br>"</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">"<br>"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
데이터베이스 작업에 PHP의 MySQLI 확장 기능을 사용할 때 캐릭터 세트 문제는 데이터 작성에서 오류를 유발하거나 오류를 일으킬 가능성이 가장 높은 요인 중 하나입니다. mysqli :: set_charset 은 데이터베이스 연결 문자 세트를 설정하는 공식 권장 방법이지만 데이터가 데이터베이스에 올바르게 기록되도록 설정 한 후에도 일부 세부 사항에주의를 기울여야합니다.
<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>->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>->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>-></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>->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>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>();
</span></span>
여기서 UTF8MB4는 이모티콘과 같은 특수 문자를 포함하여 전체 유니 코드를 지원하기 때문에 권장 문자 세트입니다.
연결 문자 세트가 올바르게 설정 되더라도 데이터베이스 테이블 또는 필드의 문자 세트가 다르면 여전히 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>
직접 스 플라이 싱 SQL 스트링은 문자 인코딩 문제 또는 SQL 주입 위험이 발생하기 쉽습니다. 전처리 명세서를 사용하여 데이터가 올바른 인코딩으로 작성되었는지 확인하십시오.
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></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>-></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>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>
MySQLI는 연결 문자 세트에 따라 매개 변수를 자동으로 처리하여 문자의 위험이 줄어 듭니다.
PHP 파일 자체는 BOM없이 UTF-8으로 저장해야합니다.
HTML 페이지는 문자 세트를 선언해야합니다.
<span><span><span class="hljs-tag"><<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>>
</span></span>
이러한 방식으로, 사용자가 입력 한 데이터, PHP에 의해 처리 된 문자열 및 데이터베이스에 작성된 문자 세트는 일관성을 유지합니다.
$ mysqli-> set_charset ( "utf8mb4")을 사용하여 연결 문자를 설정하십시오.
데이터베이스, 테이블 및 필드 문자 세트가 연결 문자 세트와 일치하는지 확인하십시오.
전처리 문을 사용하여 데이터를 삽입하십시오.
PHP 파일과 페이지가 UTF-8으로 인코딩되어 있는지 확인하십시오.
다음 단계를 따라 데이터베이스에 데이터를 가장 많이 작성할 때 문자 오류 또는 차량 코드를 피하십시오.
관련 태그:
mysqli