ASCII(American Standard Code for Information)

  • 1960년대 ANSI에서 표준화한 7비트 부호 체계
    • 프로그램, 기기간 통신 및 데이터 저장을 위해 문자/기호가 컴퓨터 언어인 0,1 변환 필요성 대두
  • 아스키코드표 : 128개 문자 테이블
  • 128개 숫자(키)에 특정 문자값 할당
  • 0x00 ~ 0x7F : 총 127개 문자(대소문자 , 숫자, 제어문자, 특수문자)
  • ‘A’ = 0x41 로 매핑

Unicode

  • 숫자(키)와 글자(값)이 1:1 로 매핑된 코드.
  • 아스키코드로 표현할 수 없는 문자(값)들을 유니코드를 통해 특정 숫자(키)와 1:1로 매핑.
  • U+ 라는 접두어가 붙어 있음.
  • 아스키코드의 0x41은 대문자 A이고, 이를 유니코드표에서 찾으면 U+0041이 됨.
  • ‘A’ = U+0041
  • 영어,숫자,기본기호 외 특정 국가에서 사용되는 문자 처리 필요성 대두 → 1바이트 정의 아스키코드 확장 요구
  • 아스키코드로 표현되지 않는 문자 표현울 위해 전세계의 모든 문자에 특정 숫자(키)와 맵핑
    • 2의 20승 + 2의 16승 만큼의 공간을 사용하므로 유니코드에 거의 모든 문자 수용
    • 한자(10만여자) 제외 + 한글의 경우, 조합형을 위한 자모 및 완성형 모두 수용
    • 분할된 테이블 사용  
  • 타국에서 한글 확장팩이 설치되지 않더라도 한글 표현 가능
  • 글로벌 서비스 제공 또는 다양한 언어로 작성되는 환경에 적합
  • 리눅스 계열의 서버의 경우, 유니코드 지원 또는 유니코드로 인코딩 설정 가능
    • 일반적으로 서버 인코딩은 UTF-8 이용

EUC-KR

  • 2바이트로 표현할 수 있는 코드표가 있음
  • EUC-KR에서는 한글 1자가 2byte

CP949

  • 2바이트로 표현할 수 있는 코드표가 있음
  • Window 의 경우, CP949 방식 사용
    • MS에서 EUC-KR 방식에서 확장 후, CP949 또는 MS949 로 통칭.
    • 현재, Window는 유니코드 기본 베이스

UTF-8

  • UTF-8에서는 한글 1글자가 3byte
  • 한글 ‘가’는 ‘AC00’
  • 가변길이 문자 인코딩 방식 
  • 조합형 방식의 문자집합(Character Set) + 유니코드를 사용하는 인코딩 방식
  • ASCII 표현 가능
  • 한글(3바이트) + 공백, 영문(1바이트)
  • 유니코드 1개 문자 표기를 위해, 1바이트~4바이트 사용.
    • (ex) U+0000 ~ U+007F 범위 아스키문자 : UTF-8 방식 1바이트 표기
    • 4바이트 표현 문자는 다국어 평면(BMP) 바깥의 유니코드 문자. 거의 사용안함.
  • 사용 환경 : PHP / MYSQL/Apache / Nginx 등
  • 유니코드표 : U+로 시작하는 문자 테이블  
  • UTF-8 / UTF-16 / UTF-32 비교

    • 유니코드의 숫자 키 표현방식의 차이 
    • 같은 유니코드표로 다르게 표현하는 방식. 
    • UTF-8 : 가변바이트 활용

      1바이트만으로 활용 가능한 ‘A’ 의 경우 : 0x41

    • UTF-16 : 2바이트(16비트) 활용

      2바이트 모두 활용 ‘A’ 의 경우 : 리틀엔디안/빅엔디안 방식에 따른 표기 차이

      LE(Little-Endian) 방식 (FF FE) : 0x4100

      BE(Big- Endian) 방식 (FE FF) : 0x0041

    • UTF-32 : 4바이트 활용

      4바이트 모두 활용 ‘A’ 의 경우 : 리틀엔디안/빅엔디안 방식에 따른 표기 차이

      LE(Little-Endian) 방식: 0x4100 0000 

      BE(Big- Endian) 방식 : 0x0000 0041

참조

  • 위키 https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C
  • https://inkim0927.tistory.com/65 [Inkim’s Project Logging:티스토리]