>  기사  >  백엔드 개발  >  mysql 4.1에 액세스하는 PHP의 잘못된 문제 해결

mysql 4.1에 액세스하는 PHP의 잘못된 문제 해결

黄舟
黄舟원래의
2016-12-21 10:08:471405검색

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)를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.