노주현 개인 블로그

문자열 인코딩 본문

프로그래밍/C#

문자열 인코딩

해인아빠408 2022. 1. 21. 08:58

문자열 인코딩이란?

2진법을 사용하는 컴퓨터가 인간의 언어를 규칙에 따라 2진수로 변환하는 방식

컴퓨터는 2진수와 문자를 1:1 로 대응하는 규칙을 통해 2진수로 문자를 처리한다.

ex) 2진수: 0100  0001 -> 문자 A

 

 

인터넷에서 글자가 깨지거나 안보이는 문제가 발생하는 원인

1. 컴퓨터가 처음 등작했을 때 영어와 일부 특수 문자만 지원했다

   시간이 지나 많은 국가가 자국의 언어를 표현하고자 독자적인 규칙을 만들기 시작했다

   한국은 EUC-KR 을 만들었다. 

 

2. 유니코드 방식이 만들어지면서 모든 언어를 표현할 수 있도록 통일 되었다.

 

3. 모든 개발 환경이 유니코드를 동일하게 처리하지 않기 때문에

   개발자는 서로 호환되지 않는 유니코드 문자열 인코딩 방식 (UTF-8, UTF-16, UTF-32) 중 하나를 택해야 한다.

 

 

 

문자열 인코딩 방식 (문자 코드)

문자를 코드로 표현하는 방식 

유니코드(방식 : UTF-8, UTF-16, UTF-32), 아스키코드, EUC-KR 등등

 

 

 

아스키 코드 (ASCII)

처음으로 표준을 정립한 문자열 집합으로 총 128개의 숫자로 문자+기호를 표현한다.

문자 하나를 표현하기 위해 1바이트를 사용한다. 

아스키코드

 

 

 

EUC-KR

1. 한국어 문자 집합으로 문자 하나를 표현하기 위해 2바이트를 사용한다. 

아스키코드 문자(1바이트)를 표현할 수 있다. (2바이트보다 작기 때문에)

 

2. 좌측 코드를 기준으로 오른쪽으로 한칸 씩 이동할 때마다 1바이트를 더한다.

 

EX) 가 : b0a1     갖 : b0ae

b0a1 은 0xb0 , 0xa1 로 나뉘어 총 2바이트를 사용하게 된다.

 

 

3. 완성형 코드

모든 글자가 완성된 형태로만 존재하는 완성형 코드이다. 

 

4. 한글뿐만 아니라 숫자, 특수 기호, 영문, 한문, 일어가 존재한다. 

 

 

 

 

유니코드 인코딩

유니코드라는 문자 집합을 UTF 라는 문자열 인코딩 규칙으로 

문자를 코드로 표현하는 것 

 

즉 UTF 는 유니코드가 매핑해놓은 표를 보면서 사람의 언어 <-> 기계어로 변경을 해 주는 것

그리고 이 과정을 인코딩이라고 부른다. 

 

 

 

Base64 인코딩

인코딩 종류 중 하나로서 Binary Data 를

Character set으로부터 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 것

 

 

기본적인 원리는 '문자열->ASCII Binary -> 6bit cut -> base64_Encode'

 

base64 는 HTML 또는 Email 과 같이 문자를 전송하기 위한 대상에 Binary Data 를 포함해야 될 필요가 있을 때,

포함 된 Binary Data 가 시스템 독립적으로 동일하게 전송 또는 저장 되는 것을 보장한다. 

 

 

 

 

 

시리얼 통신에서 한글을 보낼 때

별도의 인코딩 과정을 거치지 않고 Default 형태로 전송

byte[] buffer = Encoding.Default.GetBytes(msg);

 

'프로그래밍 > C#' 카테고리의 다른 글

Radians <-> Degrees  (0) 2022.03.04
화면 캡처  (0) 2022.02.24
클래스 상속 - Interface  (0) 2022.01.18
Thread 관련 내용 총정리  (0) 2022.01.05
Momory Copy 여러가지 방식  (0) 2022.01.03
Comments