공공부하자개발 · 영어 학습 노트
자바
실무 확장Excel · 파일 업로드 · DB 연동0/22 완료
  • 01Excel(XLSX) 구조와 순수 JDK로 읽기/쓰기
  • 02Apache POI로 Excel 업로드/다운로드
  • 03파일 업로드/다운로드 서버 (HttpServer)
  • 04JDBC 기초와 트랜잭션 (H2)
  • 05MyBatis 어노테이션 매퍼로 쿼리 연동
  • 06MyBatis XML 매퍼 · Oracle 방언 · PageHelper · Spring Boot
  • 07REST API 서버와 JSON
  • 08Vue 3 SPA 와 Java 서버 연동
  • 09@Scheduled 운영
  • 10로깅 실무: 레벨·계층, MDC 추적, 예외·성능, 마스킹, 롤링, JSON 로그
  • 11외부 API 연동
  • 12테스트 실무
  • 13암호화·개인정보 보호
  • 14인코딩·한글 실무
  • 15@Transactional 심화
  • 16긴 작업 비동기 처리와 진행률
  • 17SFTP·FTP 파일 연계
  • 18로컬 캐시와 @Cacheable
  • 19메일·알림 발송
  • 20웹 보안 체크리스트
  • 21빌드 도구와 폐쇄망 의존성 반입
  • 22성능 측정: p50·p95·p99, 측정 계층, JFR, JMH 함정, 자체 부하 테스트, 병목 순위
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 실무 확장 › 14 / 22

인코딩·한글 실무

UTF-8·EUC-KR·CP949, BOM, 깨진 글자 진단, 바이트 길이, 파일명
섹션 7진행 0 / 22
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

4. 응용 변형 예제

4.1 Oracle NLS_CHARACTERSET 확인

DB 연동 전에 문자셋부터 확인합니다. 콘솔에서 직접 조회합니다.

sql
SELECT parameter, value
FROM nls_database_parameters
WHERE parameter = 'NLS_CHARACTERSET';

AL32UTF8이면 한글 1자가 3바이트, KO16MSWIN949면 2바이트입니다. VARCHAR2 컬럼 길이를 BYTE가 아니라 CHAR로 선언하면 글자 수 기준이라 이 차이에 덜 민감해집니다.

4.2 Spring Boot application.yml 인코딩 설정

레거시 MySQL 연동에서 흔히 빠뜨리는 두 줄입니다.

yaml
server:
  servlet:
    encoding:
      charset: UTF-8
      force: true
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/app?characterEncoding=UTF-8&useUnicode=true

force: true가 없으면 요청 인코딩만 UTF-8 로 바뀌고 응답 인코딩은 그대로 남는 경우가 있어 둘 다 명시합니다.

4.3 레거시 EUC-KR 파일 변환 유틸

경계 지점에서만 변환하는 원칙을 코드로 옮기면 다음과 같습니다.

java
// 내부 UTF-8 문자열을 레거시 EUC-KR 전문 바이트로 변환
static byte[] toLegacyBytes(String internalUtf8Value) {
    return internalUtf8Value.getBytes(Charset.forName("EUC-KR"));
}

// 레거시 EUC-KR 전문 바이트를 내부 UTF-8 문자열로 변환
static String fromLegacyBytes(byte[] legacyBytes) {
    return new String(legacyBytes, Charset.forName("EUC-KR"));
}

이 두 메서드 바깥으로는 byte[]를 절대 노출하지 않고, 서비스 로직은 항상 자바 String(UTF-16)만 다루도록 강제하는 것이 유지보수 포인트입니다.

응용 변형 예제
  • 4.1 Oracle NLS_CHARACTERSET 확인
  • 4.2 Spring Boot application.yml 인코딩 설정
  • 4.3 레거시 EUC-KR 파일 변환 유틸
이전 섹션3 코드 예제4 / 7다음 섹션5 자주 하는 실수 (Tip)