MySQL에서 잘못된 문자를 읽는 PHP에 대한 솔루션: 1. 데이터베이스 테이블을 생성할 때 데이터베이스 테이블의 문자 집합을 지정합니다. 2. MySQL의 문자 집합을 설정합니다. 3. 데이터베이스 간에 문자를 전송할 때 사용되는 기본 문자 인코딩을 설정합니다. 4. HTML 페이지를 설정합니다. 사용된 문자 집합입니다. 5. PHP 텍스트 파일에서 사용되는 문자 집합을 설정합니다.
이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP에서 mysql을 읽을 때 발생하는 왜곡된 문제 요약
php가 mysql을 읽을 때 다음 위치에서 문자 집합.
1. 데이터베이스 테이블을 생성할 때 데이터베이스 테이블의 문자 집합을 지정합니다. 예를 들어
1 create table tablename 2 ( 3 id int not null auto_increment, 4 title varchar(20) not null, 5 primary key ('id') 6 )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)을 사용해 보세요(이 문서 참조). 데이터베이스와 php는 인코딩이 통합되어 있지만 mysqli::set_charset() 함수가 호출되지 않으면 데이터를 읽을 때 여전히 잘못된 문자가 나타납니다. )
$db = new mysqli('localhost','user','passwd','database_name'); $db->set_charset('utf8');
4. .
(另,set names utf8相当于下面三句 SET character_set_client = utf8; SET character_set_results = utf8; SET character_set_connection = utf8; )
5.php 텍스트 파일에서 사용하는 문자 세트를 메타 태그에 설정합니다.
vim을 사용하여 Linux에서 파일을 열 수 있습니다.
<meta http-equiv="content-type" content="text/html; charset=utf-8">
를 입력하면 파일에서 사용하는 문자 집합을 볼 수 있습니다.
깨끗하지 않은지 확인하려면 파일 자체의 인코딩, 지정된 인코딩을 확인해야 합니다. 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
에서는 잘못된 문자가 표시됩니다. ) 데이터베이스 테이블의 문자 집합은 utf8입니다. 중국어를 정상적으로 삽입하고 읽으려면 집합 이름 utf8
을 사용하세요. mysql의 표시는 정확합니다
(3) 데이터베이스 테이블의 문자 집합은 utf8이 아닙니다. utf8
을 mysql에 표시하는데 판독값은 모두 물음표입니다.
추천 학습: "
PHP 비디오 튜토리얼"
위 내용은 PHP가 mysql의 잘못된 문자를 읽는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!