mysql characterset

한결·2022년 5월 13일
0

Web

목록 보기
2/2

mysql에서는 varchar(n)에 따라 입력 가능한 문자의 수가 제한됩니다
기본적으로 영어=1byte 한글=3byte이지만 mysql의 varchar은 n이 1character을 의미하기 때문에 영어든 한글이든 varchar(n) = 1글자가 됩니다

때문에 한글을 사용한다고 해서 n의 값을 늘릴 필요는 없습니다

[mysql에서 한글 깨짐(혹은 안보임)]

예를 들어 users 테이블에서 사용자의 nickname을 입력받았다고 가정해보겠습니다.
이때 영어로는 정상적으로 입력되지만 한글로는 입력되지 않는 경우가 발생할 수 있습니다.
해당 오류는 DB, Table, Column의 Characterset과 관련이 있습니다.

DB, Table, Column의 CharacterSet을 확인하는 명령은 다음과 같습니다

SHOW CREATE DATABASE [DB명];
SHOW CREATE TABLE [Table명];
SHOW CREATE COLUMN [COLUMN명];

위의 사진은 Table의 ChareacterSet을 확인한 결과입니다.
만약 맨 마지막 부분(ENGINE=InncoDB ''')에서 DEFAULT CHARSET이 utf8 또는 utf8mb4가 아닌 다른 것으로 설정이 되어있다면 수정해주시면 됩니다.

또 상단의 Column에 해당하는 CharacterSet이 latin과 같은 것으로 설정되어있으면 똑같이 utf8로 수정을 하면 한글과 관련된 문제를 해결할 수 있습니다

테이블 CaracterSet수정
alter table [Table명] default character set = utf8;

칼럼 CaracterSet수정
alter table [Table명] modify column [Column명][컬럼Type] character set utf8 collate utf8_general_ci not null;

만약 위와 같이 설정을 했음에도 한글에 문제가 생겼다면
DB의 CharacterSet을 확인하거나 Table과 Column의 CharacterSet이 일치하는지 확인해야합니다

profile
개발

0개의 댓글