>백엔드 개발 >PHP 튜토리얼 >TP 프레임워크 및 PDO 문자 인코딩 문제

TP 프레임워크 및 PDO 문자 인코딩 문제

WBOY
WBOY원래의
2016-08-04 09:19:191402검색

프레임을 이용하여 한자를 삽입하고 확인하면 깨짐 현상이 발생하지 않습니다. 하지만 PDO를 이용하여 삽입한 한문을 확인하면 깨짐 현상이 발생하지 않습니다. , 그것은 깨질 것입니다. TP에 의해 삽입된 중국어를 확인하기 위해 PDO 출력을 사용하면, 그것은 또한 깨질 것입니다. mysql 블랙창에 중국어를 직접 삽입하면 프레임을 사용하면 중국어가 깨질 수 있는데, PDO를 사용하면 중국어가 깨집니다. PDO에 이 문장을 추가했는데 header('content. -type: text/html; charset=utf-8;
이전에 문자 인코딩을 변경한 적이 있는데, 그런 다음 테이블의 문자 인코딩을 확인하여 해당 필드가 uft8에 있는지 알아냈습니다. 형식인데 테이블이 gbk 형식인가요? 이런 상황에서 프레임워크와 PDO 방식으로 쿼리한 중국어가 어떻게 왜곡되지 않을 수 있을까요? 특정 필드의 인코딩과 이 테이블의 인코딩 사이에 어떤 관계가 있습니까? 어느 쪽이 우선해야 할까요?
현재 mysql의 문자 인코딩입니다
TP 프레임워크 및 PDO 문자 인코딩 문제

<code> CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(15) NOT NULL,
  `class` varchar(400) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=gbk |






</code>

답글 내용:

프레임을 이용하여 한자를 삽입하고 확인하면 깨짐 현상이 발생하지 않습니다. 하지만 PDO를 이용하여 삽입한 한문을 확인하면 깨짐 현상이 발생하지 않습니다. , 그것은 깨질 것입니다. TP에 의해 삽입된 중국어를 확인하기 위해 PDO 출력을 사용하면, 그것은 또한 깨질 것입니다. mysql 블랙창에 중국어를 직접 삽입하면 프레임을 사용하면 중국어가 깨질 수 있는데, PDO를 사용하면 중국어가 깨집니다. PDO에 이 문장을 추가했는데 header('content. -type: text/html; charset=utf-8;
이전에 문자 인코딩을 변경한 적이 있는데, 그런 다음 테이블의 문자 인코딩을 확인하여 해당 필드가 uft8에 있는지 알아냈습니다. 형식인데 테이블이 gbk 형식인가요? 이런 상황에서 프레임워크와 PDO 방식으로 쿼리한 중국어가 어떻게 왜곡되지 않을 수 있을까요? 특정 필드의 인코딩과 이 테이블의 인코딩 사이에 어떤 관계가 있습니까? 어느 쪽이 우세해야 할까요?
현재 mysql의 문자 인코딩입니다
TP 프레임워크 및 PDO 문자 인코딩 문제

<code> CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(15) NOT NULL,
  `class` varchar(400) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=gbk |






</code>

tp 프레임워크는 utf8 형식을 사용하므로 데이터베이스 문자셋에 문제가 있을 것입니다. 데이터베이스도 utf8로 설정해야 하고, 테이블도 utf8로 설정해야 합니다.
SQL 코드를 보세요. 위의 필드는 utf8인데 테이블은 gbk입니다.

<code> CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(15) NOT NULL,
  `class` varchar(400) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(12) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=utf8 |</code>
<code>ALTER DATABASE 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci</code>

걱정하지 마세요. 전체 프로젝트에 관련된 모든 인코딩을 utf8로 설정하면 잘못된 코드 문제가 발생하지 않습니다.

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