DB의 인코딩 이슈

  • 문자열 전체를 데이터로 저장하고 검색하는 일은 흔히 발생되는 요구사항.
  • 웹 기반 시스템 전체에 걸쳐 인코딩 규칙은 일관되야 함
  • 저장되는 데이터의 형식에 이모지 같은 확장영역의 데이터 포함되는지 반드시 고려(사실상 모두 포함된다고 보는 것이 타당)
  • 영문 대소문자를 고려해야 하는 것 인지 생각해야함

MySQL 경우

  • MySQL은 기본적으로 UTF-8
    • CHAR, VARCHAR 형식은 utf8_general_ci 사용
      • 대소문자 구분 안한다
      • insensitive 민감 안하게처리한다란 뜻
    • CI(Case Insensitive)
  • utf8mb4
    • 기존 utf8(최대 3바이트)와 달리 4바이트 (Mulit Byte)를 지원하므로 한글 문자 외에 이모지, 특수 문자, 한자 확작 영역 등 모든 유니 코드 문자 처리 가능
    • 대소문자 구분 안함

Collation(정렬 방식) 설정과 대소문자 구분

  • utf8mb_general_ci
    • 대소문자 구분 안함
    • 한영만 사용할 경우 적합
  • utf8mb4_unicode_ci
    • 대소문자 구분 안함
    • 다국어(독어, 프랑스어 등) 지원해야할 경우에 사용
    • 상대적으로 검색 성능 떨어짐
  • utf8mb4_bin
    • 2진 데이터 비교에 따라 대소문자 구분