>  기사  >  데이터 베이스  >  MySQL 문자셋 문제에 대한 자세한 설명(그림)

MySQL 문자셋 문제에 대한 자세한 설명(그림)

黄舟
黄舟원래의
2017-03-18 14:34:491274검색

최근 회사의 오래된 프로젝트에서 이모티콘 표현을 지원해야 했습니다. 처음에는 단순히 데이터베이스의 테이블 필드만 수정하면 되는 줄 알았는데, 의외로 일련의 문제가 발생했습니다. 메모에 대한 요약은 다음과 같습니다.

01 MySQL 문자 집합설정

MySQL 문자셋 문제에 대한 자세한 설명(그림)

character_set_server: 기본 내부 동작 문자 집합
character_set_client: 클라이언트 소스 데이터에서 사용하는 문자 집합
character_set_connection: 연결 계층 문자 집합
character_set_results: 쿼리 결과 문자 집합
character_set_database: 현재 선택된 데이터베이스의 기본 문자 집합
character_set_system: 시스템 메타데이터(필드 이름 등) 문자 집합

02 MySQL의 문자 집합 변환 프로세스

  • MySQL Server는 요청을 받으면 character_set_client의 요청 데이터를 character_set_connection로 변환합니다.

  • 은 내부 작업을 수행하기 전에 character_set_connection의 요청 데이터를 변환합니다. 은 내부 연산 문자 집합이며 결정 방법은 다음과 같습니다.

    • 표의 해당 필드의 CHARACTER SET 설정 값을 사용합니다.

    • 위 값이 존재하지 않는 경우 해당 데이터 테이블(MySQL 확장, 비SQL 표준)의 DEFAULT CHARACTER SET 설정 값을 사용합니다. 위 값이 없으면 해당 데이터베이스의 CHARACTER SET 설정 값을 사용하고,

    • 위 값이 없으면

      설정 값을 사용합니다.
    • character_set_server

      은 요청에 대한 응답으로 내부 연산 문자 집합의 연산 결과를
    • 로 변환합니다.
  • character_set_results03 MySQL 시작

    구성 파일
  • my.cnf

default-character-set: mysql 명령 설정 라인 연결을 위한 기본 문자 집합

character-set-server: 시스템의 내부 운영 문자 집합을 설정합니다(예: 위에서 언급한 Character_set_server)MySQL 문자셋 문제에 대한 자세한 설명(그림)collation_server: 시스템의 기본 문자 집합 정렬을 설정합니다

04 PHP 연결 MySQL (PDO 연결 방법을 예로 들어)

문자 집합을 설정하는 두 가지 일반적인 방법

mysql:host=localhost;dbname=db_demo;charset= utf8mb4

  • PDO::MYSQL_ATTR_INIT_COMMAND => "이름 설정 utf8mb4"

  • 05 요약

Data 테이블 필드의 문자 집합은

  • 이어야 합니다. 일반적으로 utf8mb4,

    및 는 동일하며 모두
  • ( 기본적으로 이 3개의 매개변수는 모두
  • 입니다. 그렇지 않으면 이모지 표현을 구현할 수 없습니다. 그 이유는 문자셋 변환과정을 참고하세요.)

    character_set_clientcharacter_set_connectioncharacter_set_resultsutf8mb4데이터베이스 utf8mb4에 연결하는 데 사용되는 문자 집합도

  • 이어야 합니다. utf8mb4 및 기타 기본값 문자 집합의 유형은 그다지 중요하지 않지만 일관성을 유지하는 것이 가장 좋습니다

  • TP에는 함정이 정말 많습니다. TP를 멀리하세요character_set_servercharacter_set_database

위 내용은 MySQL 문자셋 문제에 대한 자세한 설명(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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