>  기사  >  백엔드 개발  >  mysql php 깨짐 문제 요약

mysql php 깨짐 문제 요약

藏色散人
藏色散人원래의
2020-07-06 09:21:462345검색

mysql php 문자 왜곡 문제 해결: 1. 데이터베이스 테이블을 생성할 때 데이터베이스 테이블의 문자 세트를 지정합니다. 2. mysql의 문자 세트를 설정합니다. 3. 데이터베이스에 연결한 후 사용되는 기본 문자 인코딩을 설정합니다. 데이터베이스 간에 문자를 전송할 때 4. html 페이지에서 사용되는 문자 세트를 설정합니다.

mysql php 깨짐 문제 요약

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() 함수를 호출하지 않으면 데이터를 읽을 때 여전히 문자가 깨져 나옵니다. 이유는 무엇입니까? )

(또한, 세트 이름 utf8은 다음 세 문장과 동일합니다

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');

5.php 텍스트 파일에 사용되는 문자 세트를 설정합니다.
vim을 사용하여 Linux에서 파일을 열 수 있습니다. :set 인코딩

을 입력하여 파일에 사용된 문자 집합을 볼 수 있습니다.


문자가 왜곡되지 않았는지 확인하려면 파일 자체의 인코딩, 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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