etc.

[문자열] 인코딩, Char set, ASCII, 유니코드, UTF-8

인쥭 2021. 12. 16. 16:24
반응형

인코딩 / 디코딩

  • 문자, 기호 <-> 컴퓨터가 이해할 수 있는 값으로 변환하는 과정을 통칭.
    • 인코딩: 문자를 0, 1로 변환
    • 디코딩: 0, 1로 작성된 값을 문자로 변경
  • 이러한 변환 과정은 미리 정해진 기준(= Character Set)을 바탕으로 수행되어야 의미가 있음.

Character set

  • 어떤 문자들이 컴퓨터에 저장될 때 어떤 코드로 저장될지 규칙을 정의한 집합이라고 함.
  • 아래에 작성할 ASCII, UTF-8 또한 '어떤 문자들이' '어떤 코드로 저장될지(= 인코딩 방식)를 정의하므로 Char set에 포함된다.
    • ASCII: '영어'를 '1byte 코드로' 저장
    • UTF-8: '모든 문자열을 대표하는 유니코드'를 '1 ~ 4 byte 가변 길이 코드로' 저장
  • 여기에 설명이 잘 나와 있다!!!
 

MySQL에서 문자셋(Character Set)과 Collation의 차이

문자셋(Character Set) 말 그대로 특정 '문자(좀 더 정확히는 symbol)'가 컴퓨터에 저장될 때 어떠한 '코드'로 인코딩되어 저장될 것인지에 대한 규칙이 정의되어있는 집합을 말함. (A character set is a set o

blog.daum.net

ASCII

  • 7비트 인코딩 방식을 사용하는 문자 인코딩 방식 (또는 Char set) (1비트는 에러 검출용)
  • UTF-8의 경우 ASCII와 호환 성을 염두에 둔 영역 설계가 되어 있다.
    • ASCII로 작성한 문서는 UTF-8을 적용할 수 있지만, UTF-8로 작성한 문서는 ASCII로는 한정적인 경우에만 확인이 가능할 것

유니코드

  • 영문에 최적화되어 있던 ASCII와 달리 전 세계의 모든 문자를 다룰 수 있도록 설계된 산업 표준이다.

UTF-8

  • 유니코드를 위한 문자 인코딩 방식(또는 Char set)이며, 한 문자를 나타내기 위해 1 ~ 4바이트를 가변 길이로 사용한다.
    • 이 때, 1바이트 영역이 ASCII와 호환된다.
  • 때문에 모든 문자를 표현할 수 있지만, 인코딩 된 결과물은 원본보다 더 큰 크기를 가질 수 있다.

 

참고. DB의 collation

  • DB에서 검색 등의 작업을 위해 문자로 저장된 값들을 비교할 때, 정렬할 때 사용하는 규칙의 집합이다.
    • CHAR, VARCHAR, TEXT와 같은 데이터 타입의 컬럼에만 적용된다.
    • 대소문자를 구별하는 binary 방식과 구별하지 않는 case insensitive(_ci)로 나뉜다.
  • mysql의 경우, UTF-8이 3바이트 영역까지만 사용하던 것을 근거로 utf8 char set을 3바이트 기반으로 설계하였다.
    • 그러나 emoji 등 신규 추가된 4바이트 문자열에 대응하기 어려운 한계점이 있었고, 이를 대응하기 위해 utf8mb4 char set을 추가하였다고 한다. 또한 호환성 유지를 위해 기존 utf8 시스템을 utf8mb4로로 바꾸어도 값의 손실이 없다고 한다.
      • mb는 multi bytes의 약자인 듯 하다.
    • 자세한 것은 여기에 잘 나와 있다!
 

[MySQL/MariaDB] utf8mb4 언어셋 소개 및 표현범위.

기술이 매우 빠르게 발전한다. 배워도 배워도 계속 배워야 한다.   최근에 라엘이가 앞으로 100년동안은 나타나지 않을 것이라고 예상했던, 4 Byte UTF-8 문자열을 보고 여러 깨닳은 바가 있었고

blog.lael.be