수색…


선언

CREATE TABLE foo ( ...
    name CHARACTER SET utf8mb4
    ... );

연결

문자 세트를 사용하는 것이 가장 중요한 이유는 MySQL 서버에 클라이언트 바이트가 어떤 인코딩인지 알려주는 것입니다. 한 가지 방법이 있습니다.

SET NAMES utf8mb4;

각 언어 (PHP, Python, Java, ...)에는 고유 한 방식이 있으므로 대개 SET NAMES 좋습니다.

예를 들면 : SET NAMES utf8mb4 , 열 선언과 함께 CHARACTER SET latin1 -이 때 utf8mb4하기 위해 latin1에 변환됩니다 INSERTing 때 다시 변환 SELECTing .

어떤 문자 세트 및 채우기입니까?

수천 개의 데이터 정렬이있는 수십 개의 문자 집합이 있습니다. (주어진 정렬은 하나의 문자 집합에만 속합니다.) SHOW COLLATION; 의 출력을보십시오 SHOW COLLATION; .

중요한 CHARACTER SETs 는 대개 단 4 개입니다.

ascii -- basic 7-bit codes.
latin1 -- ascii, plus most characters needed for Western European languages.
utf8 -- the 1-, 2-, and 3-byte subset of utf8.  This excludes Emoji and some of Chinese.
utf8mb4 -- the full set of UTF8 characters, covering all current languages.

모두 영어 문자를 포함하며 동일하게 인코딩됩니다. utf8은 utf8mb4의 하위 집합입니다.

우수 사례 ...

  • utf8mb4를 다양한 언어를 사용할 수있는 TEXT 또는 VARCHAR 열에 사용하십시오.
  • 16 진수 문자열 (UUID, MD5 등)과 간단한 코드 (country_code, postal_code 등)에 대해서는 ascii (latin1은 괜찮습니다)를 사용하십시오.

utf8mb4는 버전 5.5.3까지 존재하지 않았으므로 utf8은 그 전에 사용할 수있는 최상의 것이 었습니다.

MySQL 외의 "UTF8"은 MySQL의 utf8mb4가 아니라 MySQL의 utf8mb4와 동일한 것을 의미합니다.

데이터 정렬은 charset 이름으로 시작하고 대개 "case and accent insensitive"의 경우 _ci_ci "단순히 비트 비교의 경우" _bin 으로 끝납니다.

'최신'utf8mb4 데이터 정렬은 유니 코드 5.20을 기반으로하는 utf8mb4_unicode_520_ci 입니다. 단일 언어로 작업하는 경우 폴란드어 규칙에 따라 문자를 약간 재정렬하는 utf8mb4_polish_ci 원할 수 있습니다.

테이블 및 필드에 문자 세트 설정

CHARACTER SETCHARSET 문을 사용하여 테이블 당뿐만 아니라 개별 필드마다 문자 세트를 설정할 수 있습니다.

CREATE TABLE Address (
    `AddressID`   INTEGER NOT NULL PRIMARY KEY,
    `Street`      VARCHAR(80) CHARACTER SET ASCII,
    `City`        VARCHAR(80),
    `Country`     VARCHAR(80) DEFAULT "United States",
    `Active`      BOOLEAN DEFAULT 1,
) Engine=InnoDB default charset=UTF8;

CityCountryUTF8 테이블의 기본 문자 세트로 설정하므로 UTF8 을 사용합니다. 다른 한편으로는 우리가 구체적으로 말했듯이 StreetASCII 를 사용할 것입니다.

올바른 문자 집합을 설정하는 것은 데이터 집합에 크게 의존하지만 데이터로 작업하는 시스템 간의 이식성을 크게 향상시킬 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow