mysql php 문자 왜곡 문제 해결: 1. 데이터베이스 테이블을 생성할 때 데이터베이스 테이블의 문자 세트를 지정합니다. 2. mysql의 문자 세트를 설정합니다. 3. 데이터베이스에 연결한 후 사용되는 기본 문자 인코딩을 설정합니다. 데이터베이스 간에 문자를 전송할 때 4. html 페이지에서 사용되는 문자 세트를 설정합니다.
PHP가 mysql을 읽을 때 다음 위치에 문자 세트가 포함됩니다.
1. 데이터베이스 테이블 생성 시 데이터베이스 테이블의 문자셋을 지정합니다. 예를 들어
create table tablename ( id int not null auto_increment, title varchar(20) not null, primary key ('id') )DEFAULT CHARSET =UTF8;
테이블 생성 시 해당 테이블의 문자셋을 지정하지 않은 경우 해당 테이블이 속한 데이터베이스의 기본 문자셋이 사용됩니다. 문자 세트는 Character_set_database에 의해 지정됩니다.
데이터베이스 테이블에서 사용하는 문자 집합을 확인하는 방법은 다음과 같습니다.
show create table mytable;
(PS: 데이터베이스/테이블을 설정하고 데이터베이스 작업을 수행할 때 MySQL의 기본 설정에 의존하는 대신 사용되는 문자 집합을 명시적으로 나타내도록 노력하십시오. 그렇지 않으면 MySQL이 업그레이드될 때 많은 문제가 발생할 수 있습니다. [1])
2. mysql의 문자 집합
mysql에는 세 가지 중요한 변수, Character_set_client, Character_set_results, Character_set_connection이 있습니다.
character_set_client를 설정하여 PHP가 데이터베이스에 저장하는 인코딩 방법을 Mysql에 알려줍니다.
character_set_results를 설정하여 PHP가 어떤 종류의 인코딩된 데이터를 얻어야 하는지 MySQL에 알려주세요.
character_set_connection을 설정하여 PHP 쿼리의 텍스트에 사용할 인코딩을 MySQL에 알려주세요.
3. 데이터베이스에 연결한 후 데이터베이스 간에 문자를 전송할 때 사용되는 기본 문자 인코딩을 설정합니다.
mysqli::set_charset() 또는 mysqli::query('set names utf8')을 사용하여 설정하세요.
"SET NAMES" 대신 mysqli::set_charset(mysqli:set_charset)을 사용해 보세요(이 문서 참조). 인코딩이 통합되었지만 mysqli::set_charset() 함수를 호출하지 않으면 데이터를 읽을 때 여전히 문자가 깨져 나옵니다. 이유는 무엇입니까? )
SET Character_set_client = utf8;
SET Character_set_results = utf8;
SET Character_set_connection = utf8;
)
4. 메타 태그에서
$db = new mysqli('localhost','user','passwd','database_name');$db->set_charset('utf8');
을 입력하여 파일에 사용된 문자 집합을 볼 수 있습니다.
문자가 왜곡되지 않았는지 확인하려면 파일 자체의 인코딩, HTML에 지정된 인코딩과 PHP가 MySQL에 알려주는 인코딩(character_set_client 및 Character_set_results 포함)이 통합됩니다. 또한 mysqli:set_charset() 함수 또는 "SET NAMES"를 사용하십시오.
3번 이후의 질문에 대해 데이터베이스에 연결한 후 문자 집합을 설정하지 않고 설정한 결과를 테스트하기 위해 몇 가지 예제를 작성했습니다. 테스트 환경 Ubuntu 12.04, MySQL 5.5, php 5.5.7. 결과는 다음과 같습니다.
(1) 데이터베이스 테이블의 문자 집합은 utf8입니다. 집합 이름을 사용하지 마십시오 utf8
한자를 정상적으로 삽입하고 읽을 수 있지만 mysql에서는 잘못된 문자가 표시됩니다
(2) 문자 집합 데이터베이스 테이블이 utf8이면 세트 이름 utf8
을 사용하여 중국어를 정상적으로 삽입하고 읽을 수 있으며 mysql
에서 올바르게 표시됩니다.(3) 데이터베이스 테이블의 문자 세트가 utf8이 아닙니다. mysql에서는 판독 값이 모두 물음표입니다.
많은 관련 지식을 알고 싶으시면
PHP 중국어 홈페이지
를 방문해주세요!
위 내용은 mysql php 깨짐 문제 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!