>  기사  >  백엔드 개발  >  PHP가 mysql의 잘못된 문자를 읽는 경우 수행할 작업

PHP가 mysql의 잘못된 문자를 읽는 경우 수행할 작업

藏色散人
藏色散人원래의
2021-05-20 10:27:232876검색

MySQL에서 잘못된 문자를 읽는 PHP에 대한 솔루션: 1. 데이터베이스 테이블을 생성할 때 데이터베이스 테이블의 문자 집합을 지정합니다. 2. MySQL의 문자 집합을 설정합니다. 3. 데이터베이스 간에 문자를 전송할 때 사용되는 기본 문자 인코딩을 설정합니다. 4. HTML 페이지를 설정합니다. 사용된 문자 집합입니다. 5. PHP 텍스트 파일에서 사용되는 문자 집합을 설정합니다.

PHP가 mysql의 잘못된 문자를 읽는 경우 수행할 작업

이 기사의 운영 환경: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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