>백엔드 개발 >PHP 튜토리얼 >PHP가 mysql 데이터베이스를 읽을 때 문자가 깨지는 문제를 해결하는 방법

PHP가 mysql 데이터베이스를 읽을 때 문자가 깨지는 문제를 해결하는 방법

一个新手
一个新手원래의
2017-09-12 10:33:201411검색

PHP가 mysql 데이터베이스를 읽을 때 문자가 깨졌을 때 해결 방법에 대해

PHP가 mysql을 읽을 때 다음 위치에 문자 집합이 포함됩니다.
1.데이터베이스 테이블 생성 시 데이터베이스 테이블의 문자셋을 지정합니다. 예를 들어

create table tablename
(
id int not null auto_increment,
title varchar(20) not null,
primary key ('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)을 사용하는 것입니다. 여기에 문제가 있습니다. 즉, 데이터베이스와 PHP가 인코딩을 통합했지만 mysqli::set_charset() 함수가 호출되지 않으면 데이터를 읽을 때 여전히 잘못된 문자가 나타납니다. 왜 그럴까요? , set names utf8은 다음 세 문장과 같습니다.

$db = new mysqli('localhost','user','passwd','database_name');
$db->set_charset('utf8');
4. 메타 태그에 html 페이지에서 사용하는 문자 세트를 설정합니다.
  • <meta http-equiv="content-type" content="text/html; charset=utf-8">

复制代码
5. php文本文件所使用的字符集。
在linux下可以用vim打开文件,输入
:set encoding
查看文件使用的字符集

要保证不乱码,需要保证文件自身的编码,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,不使用set names utf8
能正常插入、读出中文,但是在mysql中显示乱码

(2) 数据库表字符集是utf8,使用set names utf8
能正常插入、读出中文,mysql中显示正确

(3) 数据库表字符集不是utf8,使用set names utf8
mysql中显示,读出都是问号。

위 내용은 PHP가 mysql 데이터베이스를 읽을 때 문자가 깨지는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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