Computer Science TIL 01

2021년 9월 9일에 작성된 문서 1번 입니다.
Computer Science 배운 내용을 정리했습니다.



문자열

1. 유니코드 (Unicode)

세계 모든 문자를 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준

  • 유니코드에 포함되는 것들

    • ISO 10646 문자 집합
    • 문자 인코딩
    • 문자 정보 데이터베이스
    • 문자를 다루기 위한 알고리즘 등
  • 유니코드 목적 : 현존 문자 인코딩 방법을 모두 유니코드로 교체


인코딩(부호화)

어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 만드는 것

  • 인코딩과 디코딩을 하기 위해 미리 정해진 기준을 바탕으로 입력과 해독이 처리되야한다.
    • 인코딩 : 신호를 입력
    • 디코딩 : 문자를 해독
    • 문자열 세트 또는 문자셋(charset) : 인코딩과 디코딩의 기준
      • 이 문자셋의 국제 표준이 유니코드


2. ASCII 문자

알파벳을 사용하는 대표적인 문자 인코딩, 유니코드는 ASCII를 확장한 형태

  • 7 비트로 모든 영어 알파벳을 표현
유니코드 포함개수
영문 알파벳 대소문자52개
숫자10개
특수 문자32개
공백 문자1개


3. UTF-8 / UTF-16

UTF-8과 UTF-16은 인코딩 방식 차이

  • UTF-8: Universal Coded Character Set, Transformation Format8
  • UTF- 뒤에 등장하는 숫자는 비트(bit)

1. UTF-8

1-1. 가변 길이 인코딩

  • 유니코드 한 문자를 나타내기 위해 1byte(= 8 bits) ~ 4bytes 사용

    예를 들어, 라는 문자의 유니코드는 U+CF54 (16진수, HEX)로 표현됩니다. 이 문자를 이진법(binary number)으로 표시하면, 1100-1111-0101-0100 이 됩니다. 이 문자를 UTF-8로 표현하면, 다음과 같이 3byte 의 결과로 표현됩니다.

    // UTF-8로 표현된 '코'
    
    1110xxxx 10xxxxxx 10xxxxxx // x 안에 순서대로 값을 채워넣는다.
    11101100 10111101 10010100

    let encoder = new TextEncoder(); // 기본 인코딩은 'utf-8'
    encoder.encode('코') // Uint8Array(3) [236, 189, 148]
    
    (236).toString(2) // "11101100"
    (189).toString(2) // "10111101"
    (148).toString(2) // "10010100"
    
    //'코'라는 문자를 UTF-8로 표현할 수 있다.
  • ASCII 코드는 7비트로 표현
  • UTF-8 에서는 다음과 같이 1 byte의 결과로 만들 수 있다.

    b 라는 문자를 UTF-8로 인코딩한 결과입니다.

    0xxxxxxx
    01100010 
    
    //UTF-8로 표현된 'b'

	encoder.encode('b') // Uint8Array [98]
	(98).toString(2) // "1100010"
	
	//'b'라는 문자를 UTF-8로 표현할 수 있다.
  • UTF-8 : 1 byte에서 4 bytes까지의 가변 길이를 가지는 인코딩 방식
    • 네트워크를 통해 전송되는 텍스트는 주로 UTF-8로 인코딩
    • 사용된 문자에 따라 더 작은 크기의 문자열을 표현할 수 있기 때문
      • ASCII 문자는 1 바이트만으로 표현 가능
      • UTF-8은 ASCII 코드의 경우 1 byte, 크게 영어 외 글자는 2byte, 3byte, 보조 글자는 4byte를 차지
      • 이모지는 보조 글자에 해당하기 때문에 4byte가 필요

1-2. 바이트 순서가 고정됨

  • UTF-16에 비해 바이트 순서를 따지지 않고, 순서가 정해져 있다.


2. UTF-16

2-1. 코드 그대로 바이트로 표현 가능, 바이트 순서가 다양함

  • UTF-16은 유니코드 코드 대부분을 16 bits로 표현
    • 대부분에 속하지 않는 기타문자는 32 bit(4 bytes)로 표현
    • UTF-16도 가변 길이라고 할 수 있으나, 대부분은 2 바이트로 표현

U+ABCD라는 16진수를 있는 그대로 이진법으로 변환하면 1010-1011-1100-1101 입니다. 이 이진법으로 표현된 문자를 16 bits(2 bytes)로 그대로 사용하며, 바이트 순서(엔디언)에 따라 UTF-16의 종류도 달라집니다.

  • UTF-8에서는 한글은 3 바이트, UTF-16에서는 2 바이트를 차지




Written with StackEdit.

좋은 웹페이지 즐겨찾기