Language/C, C++, C#

[C] 아스키코드(ASCII)와 유니코드(Unicode)란?

byunghyun23 2020. 6. 9. 01:00
  1. 아스키코드 (ASCII)

    • 1960년 미국에서 정의한 알파벳 표준 부호 체계

    • 컴퓨터의 기본 저장 단위인 1byte(=8bit)에서 통신을 위한 1bit(parity bit)를 제외하여 최대 7bit 체계 구성

  2. 유니코드 (Unicode)

    • 전 세계의 모든 문자를 일관되게 표현하기 위한 국제 부호 체계

    • 16bit 체계 구성 (아주 희귀한 문자일 경우 최대 21bit까지 사용)

한글 유니코드 일부

 

 

영문 또는 한글을 읽어 크기를 파악해보자.

소스 코드는 아래와 같다.

#include <stdio.h>



int main() {

    int dec;



    while (1) {

        printf("Please enter a value : ");

        dec = getchar();

        if (dec <= 127) {

            printf("ASCII : %d\n", dec);

        }

        else {

            printf("Unicode : %d, ", dec);

            dec = getchar();

            printf("%d\n", dec);

        }



        while ((dec = getchar()) != '\n') {

            printf("Remaining buffer value : %d\n", dec);

        }



        printf("\n");

    }

}

getchar() 함수를 사용하여 버퍼에서 1byte값을 읽어 dec에 저장한다.

dec 값이 아스키코드 값 범위안에 포함된다면 값을 출력한다.

범위를 벗어날 경우 유니코드로 인식하여 1byte를 추가로 읽어 출력한다.

한글을 사용하기 위해서는 2byte 크기의 자료형이 필요하다는 것을 다음 결과를 통해 알 수 있다.