[cs] 문자열 인코딩

·2022년 1월 10일
0

개발 기록

목록 보기
14/68

문자열 인코딩

  • 인간의 언어를 일정한 규칙에 따라 2진수로 변환하는 방식

문자 집합과 문자열 인코딩

  • 문자 집합 : 사용할 수 있는 문자들의 집합
    • 유니코드, ISO-8859, ASCII 등
  • 문자열 인코딩 : 문자를 코드로 표현하는 방식
    • UTF-8, UTF-16, UTF-32 등 (유니코드라는 문자 집합을 표현하는 문자열 인코딩)

아스키 코드

  • 처음으로 표준을 정립한 문자열 인코딩 방식
  • 대문자, 소문자, 아라비아 숫자, 공백 및 특수 문자
  • 0~127까지 총 128개의 숫자를 사용
  • 영어를 제와한 다른 언어를 표현할 수 없다

EUC-KR(CP949)

  • 한국 산업 표준으로 지정된 한국어 문자 집합
  • 문자 하나를 표현하기 위해 2바이트를 사용한다
  • 모든 글자가 완성된 형태로만 존재하는 ‘완성형’ 코드이다
  • 조합형이 아니기 때문에 표현할 수 없는 한글이 일부 있다
  • 가능하다면 UTF-8로 바꾸는 것이 좋지만 현실적으로 어려운 경우가 많아 사용 영역을 명확히 구분해 사용하는 것이 좋다

CP949

  • EUC-KR을 확장한 문자 집합
  • 더 많은 문자를 표현할 수 있다
  • EUC-KR로 표기되어도 실제로는 CP949 문자 집합을 사용하는 경우가 많다
💡 실제 문자열 길이와 버퍼 길이가 다른 경우를 조심하자 ’안녕하세요’ 는 5글자이지만 한글은 한 글자에 2바이트기 때문에 10바이트이다 ’hello’는 5글자이고 영어는 한 글자에 1바이트기 때문에 5바이트이다

유니코드

  • 전 세계 사용자를 대상으로 하는 프로그램이나 웹 페이지를 만들 때 언어별로 다른 인코딩 방식을 사용해야 하는 문제를 해결하기 위해 만들어짐
  • 국제 표준화 기구(ISO)에서 만듦
  • 동일한 규칙으로 모든 언어를 표현할 수 있는 문자 집합

UTF-8

  • 8비트로 인코딩
  • 아스키 코드와 완벽하게 호환
  • 최소 1바이트 최대 6바이트까지 사용
  • 거의 모든 환경에서의 문자열 처리 표준으로 봐도 된다
  • JSON은 UTF-8 인코딩만 사용한다

UTF-16

  • 자바와 윈도우에 주로 쓰는 듯
  • 2바이트 또는 4바이트 길이의 문자열을 사용(보통 2바이트, 특수한 문자는 4바이트)
  • 아스키 코드와 호환되지 않는다
  • 자바 기반 웹 사이트 처럼 UTF-16기반 환경에서 UTF-8을 사용할 때는 외부 통신 시 UTF-8로 변환하는 것 처럼 사용 영역을 명확히 구분해 사용하는 것이 좋다

UTF-32

  • 4바이트를 고정적으로 사용한다
  • 꼭 써야하는 환경이 아니라면 사용하지 않는다

출처

  • 학교에서 알려주지 않는 17가지 실무 개발 기술 챕터1

0개의 댓글