본문 바로가기

Study Information Technology

[CS] what is encoding (UTF-8, ASCII, BASE64, CP949)

728x90
반응형
What is encoding and decoding in a computer?


Encoding 및 Decoding 은 컴퓨팅, 데이터 통신, 프로그래밍, 디지털 전자 장치 및 인간 통신을 포함한 다양한 형태의 통신에 사용되는데, 보통 최적의 전송 및 저장을 위해 콘텐츠의 형식을 변경하는 작업이 포함된다고 한다. 주로 Encoding은 인간이 읽을 수 있는 데이터에서 저장 혹은 전송에 최적화된 형식으로 변환하는 것을 말한다고 한다. Encoding의 목적은 데이터를 손상시키지 않고 다른 시스템에서 이 데이터를 올바르게 소비할 수 있도록 하는 것이다. 

 

컴퓨터에서  Encoding은 효율적인 전송 또는 저장을 위해 일련의 문자,숫자,특정 기호 등을 특수한 형태로 변환하는 것을 말한다고 한다. Decdoing Encoding 의 반대 프로세스를 말한다. 이러한 프로세스를 보안에 초점을 둔 encryption(암호화) 및 decryption(복호화)와 헷갈려서는 안된다고 한다.

 

Encoding의 예시Text Encoding 은 인간이 읽을 수 있는 문자를 ASCII, Unicode , UTF-8과 같은 형식으로 변환한다. Base64 encoding은 이진 테이터를 텍스트 기반 형식으로 변환하여 안전하게 전송한다.

 

웹 페이지 주소인 URL(UniformResouce Locator) 은 ASCII(American Standard Code for Information Interchange)를 사용하여 인터넷을 통해서만 전송할 수 있다. ASCII 파일에서 7비트 이진수는 각 문자를 나타내며 대문자 또는 소문자, 숫자, 구두점 및 기타 일반적인 기호일 수 있다. 그러나 URL에는 공백이 포함될 수 없으며 종종 ASCII 문자 집합에 없는 문자가 포함된다고 한다. Percent encoding 이라고 불리는 URL encdoing은 공백 혹은 + 기호와 같은 비ASCII 문자를 유요한 ASCII 형식으로 변환하여 이러한 문제를 해결한다고 한다.

 

자바에서는 네트워크나 웹을 통해 정보를 효율적으로 전달하기 위해 데이터를 다른 형식으로 변환하는 것을 말하며, Encoder는 데이터를 웹으로 표현하고, Decoder는 웹 표현 데이터를 원래 데이터로 변환한다.

 

파이썬 프로그래밍 언어 에서 인코딩은 유니코드 문자열을 바이트 문자열로 나타낸다. 이는 네트워크를 통해 인스턴스를 전송하거나 디스크 파일에 저장할 때 일반적으로 발생한다.

 

 

encoding 방식 소개

UTF-8은 유니코드 문자 집합을 표현하는 가변 길이 문자 인코딩입니다. 이것은 다양한 언어의 문자를 효과적으로 나타낼 수 있도록 고안된 인코딩 방식입니다. UTF-8은 ASCII 문자에 대해서는 1바이트를 사용하고, 다른 문자에 대해서는 2바이트에서 4바이트까지 가변적으로 사용합니다.

UTF-8의 주요 특징과 원리:

1. 가변 길이 인코딩: UTF-8은 문자마다 다르게 가변 길이를 사용합니다. ASCII 문자는 1바이트로 인코딩되고, 추가적인 문자는 2바이트에서 4바이트까지 사용됩니다.

2. ASCII 호환성: UTF-8은 ASCII와 완벽하게 호환됩니다. 즉, ASCII로 표현된 문자는 UTF-8에서도 동일하게 표현됩니다.

3. 범위에 따른 바이트 표현: 첫 번째 바이트의 상위 비트는 해당 문자의 바이트 표현 길이를 나타냅니다. 예를 들어, 만약 첫 번째 바이트가 '110'으로 시작한다면 해당 문자는 2바이트로 인코딩되는 것을 의미합니다.

4. 유니코드 코드 포인트와의 매핑: UTF-8은 각 문자를 유니코드 코드 포인트에 매핑하여 표현합니다. 코드 포인트는 문자에 할당된 고유한 숫자입니다.

예시:

문자 'A'는 ASCII에서 65로 표현됩니다. UTF-8에서는 이를 1바이트로 표현하므로 '01000001'이 됩니다.

문자 '가'는 유니코드 코드 포인트로는 44032입니다. UTF-8에서는 이를 3바이트로 인코딩하며, 이진 표현은 '11100000 10110000 10000000'입니다.

이러한 가변 길이의 표현 방식을 통해 UTF-8은 전 세계의 다양한 문자를 효과적으로 표현할 수 있습니다. ASCII와의 호환성과 효율적인 사용으로 많이 사용되는 문자 인코딩 중 하나입니다.

 

ASCII (American Standard Code for Information Interchange) 의 주요 특징과 원리

1. 특징:

7-bit 인코딩: ASCII는 7비트로 구성된 문자 인코딩 체계입니다. 따라서 2^7, 즉 128개의 문자를 표현할 수 있습니다.

기본 라틴 문자: 주로 영어 알파벳, 숫자, 구두점, 제어 문자 등을 포함한 기본 라틴 문자를 포함하고 있습니다.

표준화: ASCII는 미국 표준협회 (ANSI)에 의해 표준으로 제정되었으며, 초기의 통신 및 데이터 처리 시스템에서 널리 사용되었습니다.

제어 문자: ASCII는 제어 문자로써 일부 문자들을 사용합니다. 이는 프린터 및 통신 장비와 같은 기기들과의 상호 작용을 위한 것입니다.

문자의 순서:
알파벳은 대문자가 소문자보다 먼저 나오며, 숫자, 구두점, 제어 문자 등이 순차적으로 나열됩니다.

2. 원리:

ASCII는 각 문자에 고유한 7비트 코드를 할당하여 표현합니다. 아래는 몇 가지 ASCII 문자의 예시입니다.

대문자 'A': 01000001 (65)
소문자 'a': 01100001 (97)
숫자 '0': 00110000 (48)
구두점 '.' : 00101110 (46)
7비트로 표현되기 때문에 가능한 코드는 0000000부터 1111111까지 총 128개입니다. 이는 대소문자 알파벳, 숫자, 특수 문자, 제어 문자 등을 모두 포함합니다.

ASCII는 초기에는 영어를 기반으로 한 미국의 표준 코드였으나, 현재는 전 세계에서 많은 기기와 응용 프로그램에서 사용되는 기본적인 문자 인코딩으로 계속 사용되고 있습니다. 유니코드의 등장으로 다국어 지원이 필요한 경우에는 유니코드가 더 많이 사용되지만, ASCII는 여전히 특정 환경이나 제한된 상황에서 유용하게 사용됩니다.

 

Base64 인코딩은 이진 데이터를 텍스트로 안전하게 변환하는 데 사용되는 인코딩 방식 중 하나입니다. 이 방식은 데이터를 ASCII 문자로만 이루어진 문자열로 인코딩하여 전송이나 저장 시에 특수 문자나 제어 문자로 인한 문제를 방지합니다. 아래에서 Base64 인코딩의 주요 특징과 원리에 대해 알아봅시다.

Base64 의 주요 특징과 원리

1. 주요 특징:

문자 집합:
Base64 인코딩은 대소문자 알파벳, 숫자, 그리고 '+'와 '/' 두 개의 특수 문자, '='(패딩용)로 이루어진 총 64개의 문자를 사용합니다.

고정 길이:
Base64로 인코딩된 문자열은 항상 4의 배수로 길이가 유지됩니다. 필요에 따라 패딩 문자 '='이 사용될 수 있습니다.

이진 데이터 인코딩:
주로 이미지, 음성, 이진 파일 등의 이진 데이터를 텍스트 형태로 인코딩하는 데 사용됩니다.

2. 원리:

3바이트 블록:
Base64는 입력 데이터를 3바이트씩 묶어 이를 4개의 6비트 블록으로 나누어 인코딩합니다.

ASCII 문자로 변환:
각 6비트 블록은 ASCII 문자로 변환되어 Base64 인코딩된 문자열을 형성합니다.

패딩:
입력 데이터의 길이가 3의 배수가 아닌 경우 패딩 문자 '='을 사용하여 길이를 맞춥니다.

3. 예시:
데이터 "Hello, World!"를 Base64로 인코딩하는 예시를 보겠습니다.

텍스트를 ASCII로 변환:
"Hello, World!"를 ASCII로 변환하면 다음과 같은 이진 데이터가 됩니다:
01001000 01100101 01101100 01101100 01101111 00101100 00100000 01010111 01101111 01110010 01101100 01100100 00100001

3바이트 블록으로 나누기:
3바이트씩 묶으면 다음과 같은 블록이 형성됩니다:
01001000 01100101 01101100
01101100 01101111 00101100
00100000 01010111 01101111
01110010 01101100 01100100
00100001

6비트 블록으로 나누기:
각 3바이트 블록을 4개의 6비트 블록으로 나눕니다.

ASCII로 변환:
각 6비트 블록을 ASCII 문자로 변환하여 Base64 인코딩된 문자열을 생성합니다.
SGVsbG8sIFdvcmxkIQ==

이렇게 "Hello, World!"가 Base64로 인코딩되었습니다. Base64는 주로 이진 데이터를 텍스트 형태로 안전하게 전송하거나 저장할 때 사용됩니다.

 

 


 

한국어 텍스트를 처리하고 저장하기 위한 CP949(Code Page 949)는 Microsoft Windows 시스템에서 주로 사용되는 문자 인코딩 방식 중 하나입니다. 이 방식은 한글을 비롯한 한국어 문자를 효과적으로 다룰 수 있도록 설계되었습니다.

CP949(Code Page 949)  의 주요 특징과 원리
1. 특징:
1.1 확장 문자 집합:
CP949는 EUC-KR과 비교하여 더 많은 문자를 지원하는데, 확장 ASCII와 한글 외의 문자들을 추가로 포함하고 있습니다. 이로써 CP949는 더 다양한 문자를 표현할 수 있습니다.

1.2 Microsoft Windows 표준:
CP949는 Microsoft Windows에서 주로 사용되며, Windows의 텍스트 파일이나 웹 페이지 등에서 한국어 텍스트를 표현하는 데 적합합니다.

1.3 기존 인코딩과의 하위 호환성:
EUC-KR과의 하위 호환성을 지원하여, 기존에 사용되던 인코딩 방식에서의 데이터를 그대로 사용할 수 있도록 합니다.

2. 원리:
2.1 다양한 문자 집합:
CP949는 다양한 문자 집합을 지원합니다. 한글 외에도 영문, 숫자, 특수 문자 등을 포함하고 있어 다양한 유형의 텍스트를 다룰 수 있습니다.

2.2 한글 처리 방식:
한글은 초성, 중성, 종성으로 이루어진 음절 단위로 저장됩니다. 각 음절은 CP949에서 특정 코드 포인트에 매핑되어 저장되며, 이로써 한글 문자를 효과적으로 표현할 수 있습니다.

2.3 인코딩 방식:
CP949는 다양한 길이의 바이트로 문자를 표현합니다. 한글은 보통 2바이트로 표현되며, 영문이나 숫자는 1바이트로 표현됩니다. 이러한 다양한 문자의 표현을 가능하게 하는 멀티바이트 문자 인코딩 방식을 채택하고 있습니다.

3. 예시:
한국어 텍스트 "안녕하세요"를 CP949로 인코딩하면 해당 텍스트에 대한 CP949 인코딩 값이 생성됩니다. 이를 통해 특정 문자 집합으로 텍스트를 저장하고 공유할 수 있습니다.

4. 주의 사항:
CP949는 주로 Windows 환경에서 사용되는 특정한 인코딩 방식이기 때문에, 국제화 및 플랫폼 간 호환성을 고려할 때 주의가 필요합니다. 특히, 다양한 플랫폼 간에 텍스트를 교환할 때는 UTF-8과 같은 국제적으로 표준화된 인코딩 방식을 선호하는 것이 좋습니다.

 

 

Reference

 

1. https://www.techtarget.com/searchnetworking/definition/encoding-and-decoding

2. https://chat.openai.com/

728x90
반응형

'Study Information Technology' 카테고리의 다른 글

[IT] 백엔드 개발자 전망  (42) 2023.11.12
[IT] IT 산업 전망  (28) 2023.11.12