MySQL은 전 세계 다양한 언어를 지원하기 위해 수십 가지의 문자 집합(character set)을 내장하고 있습니다. 현재 MySQL 서버가 지원하는 문자 집합의 전체 목록을 확인하려면 SHOW CHARACTER SET 문 하나만 실행하면 됩니다.
mysql> SHOW CHARACTER SET; +-----------+-----------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +-----------+-----------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russian | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | utf16 | UTF-16 Unicode | utf16_general_ci | 4 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | utf32 | UTF-32 Unicode | utf32_general_ci | 4 | | binary | Binary pseudo charset | binary | 1 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | +-----------+-----------------------------+---------------------+--------+ 39 rows in set (0.14 sec)
위 예시에서는 총 39개의 문자 집합이 출력되었습니다. MySQL 버전에 따라 목록과 개수는 조금씩 다를 수 있습니다.
결과 컬럼의 의미
- Charset : 문자 집합의 고유 이름입니다. 테이블이나 컬럼을 정의할 때 이 이름을 그대로 사용합니다.
- Description : 해당 문자 집합이 어떤 언어·지역·표준을 위해 만들어졌는지 설명합니다.
- Default collation : 문자 집합에 기본으로 연결된 콜레이션(문자 비교 및 정렬 규칙)입니다.
- Maxlen : 한 글자를 저장하는 데 필요한 최대 바이트 수입니다. 예를 들어
euckr은 2바이트,utf8mb4는 최대 4바이트를 사용합니다.
특정 문자 집합만 조회하는 방법
전체 목록이 아니라 원하는 문자 집합만 확인하고 싶다면 LIKE 절을 활용하면 됩니다.
mysql> SHOW CHARACTER SET LIKE 'utf%';
또한 INFORMATION_SCHEMA.CHARACTER_SETS 테이블을 조회하면 동일한 정보를 일반 SQL 문법으로 자유롭게 필터링하여 가져올 수 있습니다.
mysql> SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS;
참고로 한글 데이터를 저장할 때는 과거 euckr(EUC-KR)을 많이 사용했지만, 이모지를 포함한 모든 유니코드 문자를 지원하는 utf8mb4가 현재에는 표준처럼 권장됩니다.