본문 바로가기
배우고 있습니다/back-end 개발

[mysql] Spring 연동 한글(UTF-8) 깨짐 현상

by 유헤 2019. 6. 6.

mysql> insert into mvc_board ( bId, bName ) values ( 8, "한글테스트 ");
ERROR 1366 (HY000): Incorrect string value: '\xEC\x9C\xA0\xEC\xA7\x84' for column 'bName' at row 1


한글을 넣으려고 하면, mysql에서 한글 insert 오류가 발생합니다.

뿐만 아니라, Spring에서도 정상적으로 출력되지 않고, 외계어가 출력되는데 이 두개를 모두 해결해봅시다.

 

1. Mysql 설정

 

mysql은 일정 버전이 지나면, my.ini가 없는 경우가 있는데, 제가 설치한 mysql 도 디렉토리 내부에 my.ini가 따로 없었습니다ㅠ

 

이런 경우, 간단하게 my.ini 파일을 생성해주면 됩니다.

 

다른 블로그를 검색해보니, [mysqld] datadir, basedir 설정도 하던데.. 나는 하면 오히려 설정이 꼬이는건지

mysqld 실행이 정상적으로 안되어서 위 부분은 추가하지 않고 아래부분만 추가하였다.

[client]
default-character-set = utf8
 
[mysqld]
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci
  
[mysqldump]
default-character-set = utf8
 
[mysql]
default-character-set = utf8

 

환경설정을 마치고, mysql을 재 시작 해주면 됩니다.

저는 귀찮아서, 배치 스크립트를 따로 만들었습니다.

C:
cd C:\Users\....\mysql-5.7.26-winx64/bin
start mysqld.exe
REM pause
REM start mysql.exe -u root -pyuhe database-name적기

mysql.bat으로 저장하고 실행하면, 

작업관리자에도 mysql이 잘 뜨고 있는 것을 확인 할 수 있습니다.

mysql> show variables like 'c%';

위와 같이 설정이 되어있어야 정상

 

문제는, 기존에 미리 생성해뒀던 테이블들에게는 적용이 안되어 있으므로, 적용을 시켜줘야합니다.

1. set character set euckr;

2. ALTER TABLE (테이블명) convert to charset utf8;

 

2. Spring 설정

spring에서도 web.xml에 설정을 해주어야 합니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

    <filter>

        <filter-name>encodingFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        

        <init-param>

            <param-name>encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

    </filter>

    

    <filter-mapping>

        <filter-name>encodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

Colored by Color Scripter

cs

 

위와 같이 설정을 해주어야 한글 깨짐이 없습니다.

 

servlet-context.xml 에도 아래 그림과 같이 추가해주어야 합니다.

 

 

출처


https://okky.kr/article/434141

 

OKKY | Spring MVC + Mybatis UTF-8 문제좀 도와주세요.

Spring MVC mybatis mysql로 간단한 CRUD 구현을 하였습니다. 전체다 구현은 완료되었지만 입력시에 문제가 발생해서 질문드립니다. DB에서 직접적으로 sql를 사용하여 값을 넣을때는 한글이 제대로 들어갑니다. 하지만 사용자가 값을 한글로 입력하면 ? 로들어가게 됩니다. DB를 생성시에는 utf8mb4_general_ci로 생성하였

okky.kr

https://www.hooni.net/xe/study/86661

 

[mysql] MySQL 한글 깨짐 현상 해결하기(UTF8) - 후니넷

MySQL DB에 값을 입력하거나 백업(dump) 파일을 복원할 때 한글 값이 제대로 저장되지 않는 경우가 있다. 이런 경우 대부분 character set 설정문제이며 UTF-8로 설정하면 쉽게 고칠 수 있다. MySQL 설치 기본 상황 - latin1으로 Character-Set이 설정되어있다. - 한글을 사용하기 위해서는 UTF-8로 변경하면 사용할 수 있다. MySQL 한글 깨짐 현상 해결하기 - 한글을 저장하면 아래와 같은 ??? 형태의 모습을.

www.hooni.net

https://mitny.tistory.com/208