MYSQL 문자 집합 문제
MySQL의 문자 집합 지원(Character Set Support)에는 두 가지 측면이 있습니다.
문자 집합(Character set) 및 정렬 방법(Collation) .
문자 세트 지원은 서버, 데이터베이스, 테이블 및 연결의 네 가지 수준으로 세분화됩니다.
1. MySQL 기본 문자 집합
MySQL의 문자 집합 사양은 데이터베이스, 테이블 및 열에 사용해야 하는 문자 집합으로 구체화될 수 있습니다.
그런데 기존 프로그램은 데이터베이스와 데이터 테이블을 생성할 때 이러한 복잡한 구성을 사용하지 않습니다. 그렇다면 기본 구성은 어디서 오는 걸까요? (1) MySQL을 컴파일할 때 기본 문자 집합이 latin1로 지정됩니다.
(2) MySQL을 설치할 때 구성 파일(my.ini)에서 기본 문자 집합을 지정할 수 있습니다. , 지정하지 않으면 이 값은 컴파일 시 지정된 값에서 상속됩니다.
(3) mysqld를 시작할 때 명령줄 매개변수에 기본 문자 집합을 지정할 수 있습니다. 지정하지 않으면 이 값이 됩니다. 구성 파일의 구성에서 상속된 Character_set_server는 이 기본 문자 집합으로 설정됩니다.
(4) 새 데이터베이스를 생성할 때 명시적으로 지정하지 않으면 이 데이터베이스의 문자 집합이 누락됩니다. 지방 설정은 다음과 같습니다.
(5) 데이터베이스를 선택하면 Character_set_database가 데이터베이스의 기본 문자 집합으로 설정됩니다.
(6) 이 데이터베이스에서는 테이블을 생성할 때 기본적으로 테이블의 문자 집합은 데이터베이스의 기본 문자 집합인 Character_set_database로 설정됩니다.
(7) 테이블의 열을 설정할 때 명시적으로 지정하지 않는 한 이 열의 기본 문자 집합은 다음과 같습니다. 는 테이블의 기본 문자 집합입니다.
간단히 요약하면 아무 것도 수정하지 않으면 모든 데이터베이스에 있는 모든 테이블의 모든 필드가 latin1에 저장됩니다. 그러나 MySQL을 설치하면 일반적으로 다음을 선택합니다. 즉, 설치 프로그램은 구성 파일에서 default_character_set을 UTF-8로 자동 설정하므로 기본적으로 모든 데이터베이스 비트에 있는 모든 테이블의 모든 열이 UTF-8로 저장됩니다.
2. 기본 문자 집합 보기(기본적으로 mysql의 문자 집합은 latin1(ISO_8859_1)입니다.
일반적으로 다음을 통해 시스템 문자 집합 및 정렬 설정을 볼 수 있습니다. 두 가지 명령:
mysqlgt; '문자'와 같은 변수 표시;