[용어 정리] 유니코드, 인코딩??

[용어 정리] 유니코드, 인코딩??



컴퓨터는 0과 1이라는 값만을 인식할 수 있는 기계장치이다.
어떻게 하면 컴퓨터가 문자를 인식할 수 있게 만들까????

유니코드

  • 세계적인 표준 문자셋
  • 한 문자를 표현하기 위해 16비트를 사용하는 방식의 세계 문자 표준 코드
  • 예를들어 숫자 97은 'a', 숫자 98은 'b' 이런식으로 숫자마다 문자를 mapping해 놓으면 컴퓨터는 해당 숫자를 문자열로 인식할 수 있게 될 것이다.
  • 하지만 이렇게 컴퓨터들 마다 각각의 문자셋을 사용했더니 데이터 호환이 안되는 문제가 발생했다.
  • 이런 문제를 해결하기 위해서 미국에서 최초로 문자셋 표준인 아스키(ASCII)라는 것이 탄생했다.
  • 하지만 아스키(ASCII)는 127개의 문자만을 다룰 수 있기 때문에 아스키를 사용할 수는 없었다.
  • 이런 문제를 해결하기 위해서 등장한 구세주가 바로 유니코드(Unicode)이다.
    • 유니코드는 모든 나라의 문자를 다 포함하게끔 넉넉하게 설계되었다.

인코딩

  • 문자셋의 규칙대로 바이트를 만드는 방법
  • 가장 많이 사용되는 것이 utf-8
    • 다른 인코딩 방법에 비해 데이터의 사이즈가 작다
    • 기존 ascii와 하위 호환성을 갖는다.
      • utf-8을 이용하면 이미 ASCII로 작성된 데이터라도 변환없이 utf-8로 그대로 사용 가능

+ 파이썬을 이용해서 실습해보기

  • type명령어를 통해서 문자열은 str클래스임의 객체임을 알 수 있음.
  • 파이썬에서 사용되는 문자열은 모두 유니코드 문자열


  • 유니코드 문자열을 인코딩 없이 그대로 파일에 적거나 시스템 네트워크로 전송 불가능
    • 왜냐하면 유니코드 문자열은 단순한 문자셋의 규칙
    • 파일에 적거나, 바이트로 변환(인코딩)해야 함
    • 파일을 받을 때도 해당 바이트가 어떤 방식의 인코딩을 사용했는지 알아야 디코딩 가능



  • 유니코드 문자열을 바이트 문자열로 만들 때에는 위 예처럼 인코딩 방식을 파라미터로 넘겨줘야 함
    • 파라미터를 생략하면 디폴트 값인 utf-8로 동작함
  • type명령어를 호출해보면 b객체는 bytes클래스임의 객체임을 알 수 있음






참고 : https://wikidocs.net/15133

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?