[MySQL] MySQL 한글깨짐

Mineru·2021년 9월 1일
0

Database 생성 시 설정

한글 데이터를 데이터베이스에 넣어야 할 경우에 자주 겪는 일은 아무래도 한글이 깨지는 현상일 것이다.
멘탈이 터지지만 이유는 외의로 간단하다.
첫번째로는 데이터베이스 생성 시에 한글 지원 캐릭터 셋을 설정해야한다.

CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

이렇게 하면 한글로 된 데이터를 제대로 저장한다.

MySQL Charset List(버전 5.7.34 기준)

아래의 명령어로 해당 데이터베이스에서 지원하는 캐릭터 셋을 조회할 수 있다.

show character set;

Charset : 사용하는 언어를 표현하기 위한 문자들의 집합을 의미
Description : Charset 설명
Default Collection : 기본 Collection
Mixen : 교차 언어 지원 갯수

CharsetDescriptionDefault CollectionMixen
big5Big5 Traditional Chinesebig5_chinese_ci2
dec8DEC West Europeandec8_swedish_ci1
cp850DOS West Europeancp850_general_ci1
hp8HP West Europeanhp8_english_ci1
koi8rKOI8-R Relcom Russiankoi8r_general_ci1
latin1cp1252 West Europeanlatin1_swedish_ci1
latin2ISO 8859-2 Central Europeanlatin2_general_ci1
swe77bit Swedishswe7_swedish_ci1
asciiUS ASCIIascii_general_ci1
ujisEUC-JP Japaneseujis_japanese_ci3
sjisShift-JIS Japanesesjis_japanese_ci2
hebrewISO 8859-8 Hebrewhebrew_general_ci1
tis620TIS620 Thaitis620_thai_ci1
euckrEUC-KR Koreaneuckr_korean_ci2
koi8uKOI8-U Ukrainiankoi8u_general_ci1
gb2312GB2312 Simplified Chinesegb2312_chinese_ci2
greekISO 8859-7 Greekgreek_general_ci1
cp1250Windows Central Europeancp1250_general_ci1
gbkGBK Simplified Chinesegbk_chinese_ci2
latin5ISO 8859-9 Turkishlatin5_turkish_ci1
armscii8ARMSCII-8 Armenianarmscii8_general_ci1
utf8UTF-8 Unicodeutf8_general_ci3
ucs2UCS-2 Unicodeucs2_general_ci2
cp866DOS Russiancp866_general_ci1
keybcs2DOS Kamenicky Czech-Slovakkeybcs2_general_ci1
macceMac Central Europeanmacce_general_ci1
macromanMac West Europeanmacroman_general_ci1
cp852DOS Central Europeancp852_general_ci1
latin7ISO 8859-13 Balticlatin7_general_ci1
utf8mb4UTF-8 Unicodeutf8mb4_general_ci4
cp1251Windows Cyrilliccp1251_general_ci1
utf16UTF-16 Unicodeutf16_general_ci4
utf16leUTF-16LE Unicodeutf16le_general_ci4
cp1256Windows Arabiccp1256_general_ci1
cp1257Windows Balticcp1257_general_ci1
utf32UTF-32 Unicodeutf32_general_ci4
binaryBinary pseudo charsetbinary1
geostd8GEOSTD8 Georgiangeostd8_general_ci1
cp932SJIS for Windows Japanesecp932_japanese_ci2
eucjpmsUJIS for Windows Japaneseeucjpms_japanese_ci3
gb18030China National Standard GB18030gb18030_chinese_ci4

MySQL 설정 파일 수정

위처럼 셋팅을 해도 서버에서 데이터 Serving을 할 경우에 깨진 글자로 나가는 경우가 있다.

그런 경우는 mysql.cnf 파일 세팅이 제대로 이루어지지 않은 경우이다.

ubuntu 서버 기준으로 /etc/mysql/conf.d/mysql.cnf 경로에 설정 파일이 존재한다.

[client]
default-character-set = utf8

[mysqld]
skip-character-set-client-handshake
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
character-set-server = utf8
collation-server = utf8_general_ci
default-character-set = utf8

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

이렇게 설정을 해주면 mysql cli로 접속을 하든 데이터베이스 백업을 하든 데이터 Serving을 하든 utf-8 포맷으로 통일이 되어서 한글이 깨지는 현상으로부터 벗어날 수 있다.

profile
Daily Coding

0개의 댓글