Search

99_[ISSUE]DB - 한글 인코딩 (해결완료)✅

Publish Date
Category
Tags
Status
Not started
1 more property
Context
Table of Content

현재 상태 및 문제점

한글 인코딩 필요한 테이블
coupons
option_tb
product_tb
한글 인코딩 필요한 .sql 파일
03-coupon.sql
04-product.sql
docker-compose.yml
coupon-mysql: image: ubuntu/mysql:edge container_name: coupon-mysql networks: - coupon-network ports: - 3306:3306 environment: - MYSQL_DATABASE=coupon - MYSQL_ROOT_PASSWORD=1234 - MYSQL_USER=abcd - MYSQL_PASSWORD=1234 - TZ=UTC volumes: - ./init-scripts:/docker-entrypoint-initdb.d # 디렉토리의 모든 스크립트 매핑 command: ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci", "--explicit_defaults_for_timestamp=1"]
Java
복사
DB 인코딩 상태 확인
SHOW VARIABLES LIKE 'character_set_%';
Java
복사
한국어로 보이려면 뭐로 보여야함? utf8mb4
utf8mb4는 완전한 UTF-8 인코딩을 지원하므로, 다국어 문자와 이모지를 포함한 다양한 문자를 처리할 수 있다.

해결방안

MySQL 초기화 스크립트 수정

./init-scripts 디렉토리의 .sql 파일에 UTF-8 BOM(Byte Order Mark)을 추가 및 UTF-8로 저장되었는지 확인
스크립트 내 문자셋 설정:
-- 데이터베이스와 연결 설정 SET NAMES utf8mb4; SET CHARACTER SET utf8mb4; SET COLLATION_CONNECTION = 'utf8mb4_unicode_ci'; USE `coupon`; INSERT INTO `product_tb` (`id`, `product_name`, `description`, `image`, `price`) VALUES (1, '기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전', '', '/images/1.jpg', 1000), (2, '[황금약단밤 골드]2022년산 햇밤 칼집밤700g외/군밤용/생율', '', '/images/2.jpg', 2000), ...
SQL
복사
설명:
SET NAMES utf8mb4
MySQL 클라이언트가 서버와 통신할 때 사용하는 문자 인코딩 방식을 설정한다.
클라이언트가 서버로 데이터를 보낼 때와 서버에서 데이터를 읽을 때 모두 이 인코딩을 사용한다.
SET CHARACTER SET utf8mb4
클라이언트에서 서버로 전달되는 데이터의 문자셋을 utf8mb4로 설정한다.
결과적으로 클라이언트가 보낸 데이터가 utf8mb4로 변환되고, 서버에서 클라이언트로 보낼 때도 동일하게 처리한다.
SET COLLATION_CONNECTION = 'utf8mb4_unicode_ci'
데이터베이스 연결에서 사용할 기본 정렬(collation) 규칙을 설정한다.
utf8mb4_unicode_ci는 utf8mb4 문자셋에 기반한 대소문자 무시(case-insensitive) 정렬 규칙을 제공한다.

결과

Search
Main PageCategoryTagskkogggokkAbout MeContact