MySQL 4.1부터 도입된 다국어 지원은 정말 훌륭하고 일부 기능은 다른 데이터베이스 시스템을 능가했습니다. 그러나 테스트를 진행하면서 MySQL 4.1 이전 버전에 적용 가능한 PHP 문을 사용하여 MySQL 데이터베이스를 운영하면 테이블 문자 집합이 설정되어 있어도 문자가 깨져 나오는 현상이 발생하는 것을 발견했습니다.
MySQL 4.1의 문자 집합 지원(Character Set Support)에는 문자 집합(Character set)과 정렬 방법(Collation)의 두 가지 측면이 있습니다. 문자 집합 지원은 서버, 데이터베이스, 테이블 및 연결의 네 가지 수준으로 세분화됩니다.
시스템 문자 세트 및 정렬 설정을 보려면 다음 두 명령을 사용할 수 있습니다.
mysql> SHOW VARIABLES LIKE 'character_set_%';
+-- - ----------+------------- --+
| 변수명 | 값 |
+---------------+- ---------------+
| Character_set_client | latin1 |
| |
| char_set_database |
| char_set_server |
| Character_sets_dir | /usr/share/mysql/charsets/ |
+------------+-- - ----------+
7행 세트(0.00초)
mysql> SHOW VARIABLES LIKE 'collation_%';
+---------+--------------- - ----+
| 변수명 | 값 |
+---------+--- - ---------------+
| collation_connection |
| collation_database | latin1_swedish_ci | 🎜>
+---------+------+ 3행 세트(0.00초) 위에 나열된 값은 시스템 기본값입니다. (시스템이 latin1이라는 스웨덴식 정렬방식으로 기본 설정되어 있는게 이상하네요.) 원래 방식대로 PHP를 통해 MySQL 데이터베이스에 접근하면 테이블의 기본 문자셋이 utf8, UTF로 설정되어 있어도 -8 쿼리를 인코딩하고 보내면 데이터베이스에 저장된 데이터가 여전히 왜곡되어 있음을 알 수 있습니다. 문제는 이 연결 계층에 있습니다. 해결 방법은 쿼리를 보내기 전에 다음 문장을 실행하는 것입니다. SET NAMES 'utf8'; 이는 다음 세 가지 지침과 동일합니다. SET Character_set_client = utf8 ;SET Character_set_results = utf8;SET Character_set_connection = utf8; 다시 시도하면 정상적으로 됩니다. 위 내용은 MySQL 4.1에 대한 PHP 접근의 왜곡된 문제를 해결하기 위한 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!