문자 인코딩(Character Encoding)과 ASCII 코드


현대의 인간은 0부터 9까지 10개의 숫자를 사용합니다.


지역과 문화에 따라 다양한 사람들이 다양한 문자와 언어를 사용하고 있지만 신기하게도 숫자는 동일하게 0부터 9까지의 10진수를 사용합니다.


하지만 컴퓨터는 10진수를 사용하지 않습니다.

컴퓨터의 데이터에는 모두 0과 1만을 사용하는 2진수가 쓰입니다.


그럼 10진수의 숫자와 문자를 사용하는 사람과 2진수를 사용하는 컴퓨터는 어떻게 소통해야 할까요?


우리가 컴퓨터를 사용할 때 입력하는 정보들을 컴퓨터가 알아보기 위해서는 문자와 10진수의 숫자를 0과 1의 2진수의 숫자로 약속된 규칙에 따라 번역하는 과정이 필요합니다.


이번 시간에는 문자 인코딩과 ASCII 코드에 대해 알아보겠습니다.

 

문자 인코딩(Character Encoding)


문자 인코딩(Character Encoding)은 텍스트 인코딩(text Encoding)이라고 불리며, 컴퓨터를 사용하는 사용자가 입력한 문자나 숫자, 기호들을 컴퓨터가 사용하거나 통신에 사용할 목적으로 부호화 하는 것을 말합니다.

반대의 개념으로 인코딩 된 부호를 부호화 전으로 되돌리는 것을 디코딩(Decoding)이라고 합니다.


컴퓨터가 생겨난 초기에는 컴퓨터가 할 수 있는 작업이 단순했기 때문에 인간의 문자를 컴퓨터가 표현해야 할 필요가 없었습니다.

하지만 컴퓨터 간의 문자 데이터를 교환해야 할 필요성이 생기면서 컴퓨터가 이해할 수 있도록 각 문자별로 약석된 2진수로 만든 특정한 값을 정하게 되었습니다.


나라마다 언어와 문자가 다르기 때문에 각각의 나라에서는 자국의 문자 표현에 적합한 문자 2진 코드를 개발했습니다.

초기에는 주로 사용한 문자 이진 코드로는 아스키 코드(ASCII Code)였으나, 세계적으로 인터넷이 보급되며 표현해야 할 문자가 증가하면서 유니코드(Unicode)가 등장했습니다.

ASCII 코드는 더 이상의 문자가 추가될 수 없으나, 유니코드는 문자 추가가 가능합니다.


키보드를 이용한 문자 인코딩. 과거 사용된 한글 두벌식 자판

출처 : Wikipedia

https://en.wikipedia.org/wiki/Character_encoding



문자 인코딩 시스템을 이해 하기 쉬운 예로 모스 부호(Morse Code)가 있습니다.

모스 부호는 문자를 짧은 발신 전류(·)와 긴 발신 전류(-)만을 이용해 전신 부호를 구성해 문장까지 만들어 전송할 수 있게 만들었습니다.

모스 부호는 통신 기술이 발달한 지금에도 가장 기초적인 비상 통신 수단으로 사용되고 있습니다.

 

아스키 코드(ASCII Code)


아스키 코드는 미국 정보 교환 표준 부호(American Standard Code for Information Interchange)의 약자로, 1963년 미국 국립 표준 연구소(ANSI - American National Standards Institute)에서 개발되었습니다.


아스키 코드는 전신으로 정보를 전송하는 문자 인코딩 중 하나인 인쇄 전신기(Teleprinter)에서 사용할 코드로서 개발되었으나, 전신기 이외의 장치에서 사용할 수 있도록 기능이 추가되었고 8비트 컴퓨터에서도 활용되었습니다.


아스키 코드는 컴퓨터와 통신 장치를 비롯한 문자를 사용하는 많은 장치에서 사용되며, 오늘날 문자 인코딩의 근간이 되었습니다.

아스키 코드는 RS-232와 UART, USART와 같은 시리얼 통신에서도 사용됩니다.


아스키 코드는 영어 알파벳을 기반으로 하며, 128개의 지정된 문자를 7비트 정수로 인코딩합니다.

인코딩된 문자 중 95개를 인쇄할 수 있고, 숫자 0~9, 알파벳 소문자 a~z, 대문자 A~Z및 기호들이 포함됩니다.

그리고 나머지 33개는 비인쇄 제어 코드로 역사적인 이유로 남아 있지만 대부분 현재는 사용되지 않습니다.

아스키의 8번째 비트는 에러 검출을 위한 체크섬에 사용되지만, 비 영어권에서는 문자 표현 확대를 위해 사용하기도 합니다.


아스키 코드는 0번부터 127번까지만 사용합니다.

127번 이후 코드를 사용한 적도 있었지만 이는 표준이 아니며, 운영체제마다 다른 코드를 배치했기 때문에 호환되지 않습니다.


과거에는 아스키 코드를 표준으로 사용했으나, 이는 미국에서 정의한 표준이기 때문에 표현할 수 있는 알파벳과 그 확장형인 몇 가지 기호들에 불과했습니다.

또한 크기도 1byte에 불과해 2byte 이상의 코드를 표현할 수 없었기 때문에 비유럽 국가, 특히 문자 수가 많은 한국과 중국, 일본 등의 언어를 담기에는 한계가 있었습니다.


그에 따라 등장한 것이 위에 언급한 유니코드로, 이제는 전 세계 모든 문자를 동일하게 표현하기 위한 국제 표준 코드로 자리잡았습니다.

유니코드는 언어와 상관없이 모든 문자를 2byte(16bit)로 표현하기 때문에 총 65,536개의 서로 다른 문자를 표현할 수 있었고 새로운 문자도 추가가 가능했습니다.

하지만 1byte만으로 표현할 수 있었던 아스키 코드에 비해 크기가 2배로 확장되며 비효율적이라는 문제가 발생했고, 이런 문제를 보완하기 위해 byte를 가변적으로 조절하며 아스키 코드와 호환될 수 있도록 만든 UTF-8 코드가 등장하게 됩니다.

 

아스키 코드를 이용한 시리얼 통신


아스키 코드를 이용한 시리얼 통신 소프트웨어는 여러가지가 있으며, 주로 Teraterm, Serial Debug Assistant, 그리고 Hyper

Terminal 등을 사용합니다.


시리얼 통신 소프트웨어를 실행한 뒤 문자열을 입력해 디바이스의 현황을 확인하거나 설정을 변경하고 측정량 등을 확인할 수 있습니다.


아스키 코드 중 시리얼 통신 등에서 사용되는 제어 문자는 정보의 표현보다는 화면이나 장치를 제어하기 위한 문자입니다.

- 통신(전송) 제어(Communication Control) : 통신 상의 데이터 전송을 제어

- 서식 제어(Format Effector) : 프린터 또는 화면에 출력되는 문자의 위치를 제어

- 특수 제어(Special Control) : 프린터 제어, 데이터 전송 속도의 매칭, 특수 데이터 전송 에러의 처리 등의 기능

- 정보 분리(Information Control) : 정보를 논리적인 부분으로 분리하는 기능이 있으며, 통신에서 이 제어 문자는 통신 제어 역할이 없음 / 예)파일 분리, 레코드 분리


아래는 아스키 코드의 제어문자 입니다.


 

인포라드는 기체 유량을 측정하는 Mass Flow Meter / Controller와 진공도를 측정하는데 사용되는 Vacuum Sensor를 비롯한 여러 측정 장비들을 공급하고 있으며, 고객의 요청에 따라 OEM 방식으로 다양한 종류의 제품을 제작해 제공하고 있습니다.


문의사항은 아래 링크를 이용하시기 바랍니다.


https://www.inforad.co.kr/




출처


https://en.wikipedia.org/wiki/Character_encoding

https://en.wikipedia.org/wiki/Morse_code

https://en.wikipedia.org/wiki/ASCII

https://terms.naver.com/entry.naver?docId=5662548&cid=43667&categoryId=43667

카테고리