UTF-8 (유니 코드 변환 형식 -8)은 유니 코드 문자 세트의 모든 문자를 나타내는 가변 길이 문자 인코딩 메소드이며 영어 문자를위한 1 바이트 스토리지, 다른 문자에는 2 ~ 4 바이트 스토리지를 사용합니다. 그것의 장점은 전 세계 여러 국가의 언어와 기호로 통일 된 방식으로 표현 될 수 있으며 ASCII 인코딩과 호환되며 웹 개발 및 데이터베이스 스토리지에 널리 사용됩니다.
PHP에서 UTF-8 인코딩은 종종 다국어 웹 사이트의 데이터 교환 및 스토리지를 처리하는 데 사용됩니다. 특히 데이터베이스와 브라우저간에 데이터를 전송할 때. 인코딩이 올바르게 설정되지 않으면 차량 코드 문제를 쉽게 만듭니다.
PHP에서 MySQL 데이터베이스를 사용하고 MySQLI Extension을 사용하여 데이터베이스를 연결하고 작동하는 경우 데이터베이스 연결이 UTF-8 인코딩을 사용하고 있는지 확인하는 것이 매우 중요합니다. 그렇지 않으면, 데이터베이스 테이블과 필드가 UTF-8 인코딩으로 설정되어 있더라도 인코딩 불일치로 인해 데이터 전송 중에 여전히 문제가 발생할 수 있습니다.
mysqli :: set_charset 메서드를 사용하면 현재 데이터베이스 연결에 대한 문자 세트를 설정할 수 있습니다. 문자를 UTF-8로 설정하면 데이터 쿼리 및 삽입 중에 PHP 및 MySQL 데이터베이스가 올바르게 인코딩 및 디코딩 될 수 있습니다.
데이터베이스 연결 생성 :
MySQLI_CONNECT 또는 NEW MYSQLI () 메소드를 사용하여 데이터베이스에 연결하십시오.
캐릭터 세트 설정 :
데이터베이스에 성공적으로 연결 한 후 MySQLI :: SET_CHARSET 메소드를 사용하여 문자를 UTF-8로 설정하십시오.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 1. 데이터베이스 연결을 만듭니다</span></span><span>
</span><span><span class="hljs-variable">$host</span></span><span> = </span><span><span class="hljs-string">'localhost'</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">'root'</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-variable">$dbname</span></span><span> = </span><span><span class="hljs-string">'your_database'</span></span><span>;
</span><span><span class="hljs-variable">$conn</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-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>);
</span><span><span class="hljs-comment">// 연결이 성공했는지 확인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>->connect_error) {
</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">$conn</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// 2. 문자를 설정하십시오 UTF-8</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8"</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"실수: 문자 세트를 설정할 수 없습니다 UTF-8: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>->error;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</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">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>();
}
</span><span><span class="hljs-comment">// 3. 쿼리 및 기타 작업을 수행하십시오</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM your_table"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>->num_rows > </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">while</span></span><span>(</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
</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">$row</span></span><span>[</span><span><span class="hljs-string">'column_name'</span></span><span>] . </span><span><span class="hljs-string">"<br>"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"没有데이터"</span></span><span>;
}
</span><span><span class="hljs-comment">// 4. 연결을 닫으십시오</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span> 데이터베이스 연결 :
새로운 mysqli ()를 사용하여 데이터베이스 연결이 만들어졌으며 연결이 성공했는지 확인했습니다. 연결이 실패하면 프로그램이 die () 를 통해 종료되고 오류 메시지가 표시됩니다.
캐릭터 세트 설정 :
$ conn-> set_charset ( "utf8")을 사용하여 연결 문자를 UTF-8로 설정하십시오. 이 시점에서 PHP와 MySQL 데이터베이스 사이의 모든 데이터 전송은 UTF-8을 사용하여 인코딩됩니다. 설정이 실패하면 $ conn-> 오류를 통해 오류 메시지를 출력 할 수 있습니다.
쿼리 실행 :
반환 된 데이터가 UTF-8 인코딩 된 문자를 올바르게 표시 할 수 있는지 확인하기 위해 _table 테이블의 데이터를 쿼리하십시오.
연결 닫기 :
마지막으로 $ conn-> close ()를 사용하여 데이터베이스 연결을 닫으십시오.
데이터베이스 테이블의 문자 세트 :
PHP에서 문자를 설정하는 것 외에도 데이터베이스 테이블 및 필드의 문자 세트도 UTF-8인지 확인해야합니다. Show Create Table을 통해 테이블의 문자 세트를 보거나 다음 SQL 문을 통해 테이블의 문자 세트를 수정할 수 있습니다.
<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> utf8 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8_general_ci;
</span></span> 브라우저 인코딩 :
브라우저에서 HARBLED CODE를 피하려면 올바른 문자 세트가 HTML 페이지의 <head> 태그에 설정되어 있는지 확인하십시오. 일반적으로 다음 태그 설정을 사용할 수 있습니다.
<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> MySQL Server 기본 문자 세트 :
MySQL 서버가 기본적으로 UTF-8 인코딩을 사용하려면 MySQL 구성 파일 my.cnf 또는 my.ini 로 설정할 수 있습니다.
<span><span><span class="hljs-section">[mysqld]</span></span><span>
</span><span><span class="hljs-attr">character-set-server</span></span><span> = utf8
</span><span><span class="hljs-attr">collation-server</span></span><span> = utf8_general_ci
</span></span>mysqli :: set_charset 으로 UTF-8 인코딩을 설정하는 것은 PHP와 MySQL 데이터베이스간에 다국어 데이터가 올바르게 처리되도록하는 데 중요한 단계입니다. 문자 세트를 올바르게 구성함으로써, 차량화 된 코드 문제를 피할 수있을뿐만 아니라 전송 중에 데이터가 손실되거나 오해되지 않도록하십시오. 데이터베이스 테이블 및 필드의 문자 세트도 UTF-8인지 확인하여 응용 프로그램 전체에서 일관된 인코딩 설정을 유지할 수 있도록 프로젝트 호환성 및 확장 성을 향상시킬 수 있습니다.
관련 태그:
mysqli