PHP가 mySQL을 읽을 때sql 데이터베이스를 읽을 때 문자가 깨지는 해결 방법에 대해
php가 mysql을 읽을 때 다음 위치에 문자 집합이 포함됩니다.
1. 데이터베이스 테이블 생성 시 데이터베이스 테이블의 문자셋을 지정합니다. 예를 들어
- create table tablename
- (
- id int not null auto_increment,
- title varchar(20) null이 아님,
- 기본 키('id')
- )DEFAULT CHARSET =UTF8;
코드 복사 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)을 사용해 보세요.
- $db = new mysqli('localhost','user', ' passwd','database_name');
- $db->set_charset('utf8');
코드 복사 utf-8이 아니라 utf8이라는 점에 유의하세요 (여기서 문제는 데이터베이스와 PHP 모두 통합 인코딩을 가지고 있지만 mysqli::set_charset() 함수가 호출되지 않는 경우 , 데이터에 여전히 왜곡된 문자가 있습니다. 왜 그럴까요? ) (또한, 세트 이름 utf8은 다음 세 문장과 동일합니다. SET Character_set_client = utf8;SET Character_set_results = utf8; SET Character_set_connection = utf8; 태그 > 설정 코드 복사
- 5. PHP 텍스트 파일에서 사용하는 문자 집합입니다.
vim을 사용하여 Linux에서 파일을 열 수 있습니다.
:set 인코딩
을 입력하면 해당 파일에서 사용되는 문자 집합을 볼 수 있습니다. file
잘못된 코드가 없는지 확인하려면 파일 자체의 인코딩, 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입니다. 집합 이름을 사용하지 않았습니다.
삽입해서 정상적으로 읽을 수 있는데, mysql에서는 글자가 깨져서 표시됩니다.
(2) 데이터베이스 테이블의 문자셋은 utf8 입니다. utf8
을 사용하세요.
중국어를 정상적으로 삽입하고 읽으려면 mysql
에서 올바르게 표시됩니다.(3) 데이터베이스 테이블의 문자 집합이 utf8이 아닙니다. 집합 이름을 utf8
mysql에 표시하면 모든 문자가 물음표로 읽혀집니다.
Zero Zero H5에서 선택한 PHP 튜토리얼
위 내용은 관련 내용을 포함하여 PHP가 MySQL 데이터베이스를 읽을 때 왜곡되는 코드에 대한 해결책을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.