인코딩 이란 | 문자 인코딩 초간단 개념 정리 (Utf-8, 아스키, 유니코드…) 빠른 답변

당신은 주제를 찾고 있습니까 “인코딩 이란 – 문자 인코딩 초간단 개념 정리 (UTF-8, 아스키, 유니코드…)“? 다음 카테고리의 웹사이트 you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: you.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 [오제이 튜브]OJ Tube 이(가) 작성한 기사에는 조회수 11,971회 및 좋아요 295개 개의 좋아요가 있습니다.

인코딩 이란 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 문자 인코딩 초간단 개념 정리 (UTF-8, 아스키, 유니코드…) – 인코딩 이란 주제에 대한 세부정보를 참조하세요

문자 인코딩에 대해 개념 정리를 하였습니다. 이것만 알면 문자열 인코딩 관련해서 힘들일은 없을 것입니다.
——————————————-
[OJ TUBE 정보] 1. 매주 토요일 오후 9시 상담 방송 진행 – 종료 시간에 매주 책 추첨 및 배송.
(풀영상 다시보기)
https://youtube.com/playlist?list=PLz–ENLG_8TMJgICZ4qSMGZmhpQcmzHT3
2. 매주 수요일 오후 10시 실시간 방송 진행
(풀영상 다시보기)
https://youtube.com/playlist?list=PLz–ENLG_8TMdMJIwyqDIpcEOysvNoonf
3. 매주 화, 금 오후 8시 영상 업로드

인코딩 이란 주제에 대한 자세한 내용은 여기를 참조하세요.

[인코딩] 문자 인코딩이란? (Character Encoding) – 공빵탈출

사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것. 컴퓨터는 모든 정보를 0과 1인 바이너리, 즉 숫자로 저장한다.

+ 더 읽기

Source: limvo.tistory.com

Date Published: 11/4/2022

View: 6056

문자 인코딩이란?

인코딩은 어떤 문자에 대해 어떤 방식으로 표현하는지 약속인 것이다. 그래서 그 약속이 다르면 서로가 자신이 의도한 문자 표현이 안되는 것이다. 그럼 …

+ 여기에 자세히 보기

Source: vigli.tistory.com

Date Published: 3/28/2021

View: 924

인코딩 – 해시넷 위키

인코딩(encoding)이란 파일에 저장된 정보의 형태를 다른 것으로 변경하는 것을 말한다. 부호화(符號化)라고도 한다. 사람이 인지할 수 있는 형태의 …

+ 여기에 더 보기

Source: wiki.hash.kr

Date Published: 6/30/2022

View: 2825

Encoding 이란? – velog

문자열 인코딩 이란(Character Encoding)?. 컴퓨터는 당연히 우리가 사용하는 문자를 이해할 수 없기때문에 사람이 사용하는 모든 문자를 바이트 코드로 …

+ 자세한 내용은 여기를 클릭하십시오

Source: velog.io

Date Published: 10/19/2021

View: 8945

인코딩(Encoding)이란 ? : ASCII, URL, HTML, Base64, MS …

1> 인코딩이란? · 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 …

+ 여기를 클릭

Source: ghdwn0217.tistory.com

Date Published: 2/24/2022

View: 6007

문자 인코딩 – 위키백과, 우리 모두의 백과사전

문자 인코딩(영어: character encoding) 또는 텍스트 인코딩(text encoding) 또는 줄여서 인코딩은 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 …

+ 여기에 보기

Source: ko.wikipedia.org

Date Published: 8/18/2022

View: 3330

동영상 인코딩이란? 뭘까요? 인코딩 뜻과 의미는? – 아이티본

인코딩이란 이와 같이 어떤 저장 매체에 있던 영상등을 다른 재생기술(테이프->휴대폰이나 컴퓨터로)로 볼 수 있게 하는 변환 작업 또는 동영상 파일간 …

+ 여기에 더 보기

Source: itbon.net

Date Published: 7/10/2022

View: 7836

[Web] 비트와 바이트, 문자 인코딩이란? – Plus Ultra

[Web] 비트와 바이트, 문자 인코딩이란? const_p 2021. 6. 9. 17:18 …

+ 여기에 표시

Source: overcome-the-limits.tistory.com

Date Published: 7/14/2022

View: 6031

기초 개념 02 :: 인코딩이란? ASCII, Hex, URL, Base 64, 유니코드

0. 인코딩이란? … : 문자들의 집합을 부호화하는 방법. 즉, 컴퓨터가 이용할 수 있는 신호로 만드는 것을 말한다. 정보의 형태를 변화시킴으로써 처리 …

+ 여기를 클릭

Source: iforint.tistory.com

Date Published: 12/28/2022

View: 1265

동영상 인코딩이란 뜻과 컴퓨터 용량 단위. – 네이버 블로그

1. 다양한 형식의 코덱 값이 설정돼 있는 동영상이나 음악 파일을 컴퓨터에서 재생할 수 있도록 변환하는 것입니다. · 2. 인코딩(encoding)은 정보의 형태 …

+ 여기를 클릭

Source: m.blog.naver.com

Date Published: 8/3/2021

View: 217

주제와 관련된 이미지 인코딩 이란

주제와 관련된 더 많은 사진을 참조하십시오 문자 인코딩 초간단 개념 정리 (UTF-8, 아스키, 유니코드…). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

문자 인코딩 초간단 개념 정리 (UTF-8, 아스키, 유니코드...)
문자 인코딩 초간단 개념 정리 (UTF-8, 아스키, 유니코드…)

주제에 대한 기사 평가 인코딩 이란

  • Author: [오제이 튜브]OJ Tube
  • Views: 조회수 11,971회
  • Likes: 좋아요 295개
  • Date Published: 2020. 4. 3.
  • Video Url link: https://www.youtube.com/watch?v=ABPOjjre0C8

[인코딩] 문자 인코딩이란? (Character Encoding)

문자 인코딩 (Character Encoding)

사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것.

컴퓨터는 모든 정보를 0과 1인 바이너리, 즉 숫자로 저장한다.

그러나 우리는 문서작업, 코딩, 메시지 등 컴퓨터에서 문자를 사용하여 입력하고 저장하며 처리하고 있다.

우리가 메모장에 한글로 문자열을 입력하여 저장하게 되면 컴퓨터가 한글을 어떻게 이해할 수 있을까?

입력된 한글을 컴퓨터가 이해할 수 있는 신호로 변환하는 과정이 일어났기 때문이다.

여기서 컴퓨터가 이해할 수 있는 신호란 앞서 말한 바이너리 데이터를 의미한다.

역으로, 디코딩이란 0과 1로 구성된 바이너리 데이터를 다시 문자로 복구하는 것이다.

문자 셋 (Character Set) = 코드표

바이너리 데이터로 변환하는 인코딩과 다시 문자로 변환하는 디코딩은 미리 정해진 규칙에 의해서 수행된다.

이렇게 미리 정해진 규칙을 문자 셋이라고 하며, 초기 표준 문자열 셋은 ASCII, EBCDIC … 이었다.

그러나 인터넷이 전세계적으로 보급되며 표현해야 할 문자가 증가하면서 문자 셋들을 표준화 할 필요성이 대두되었다.

이후 등장하게 된 것이 유니코드이다.

문자 인코딩과 문자 셋

문자 인코딩과 문자 셋은 약간 다른 개념이다.

문자 인코딩 : 문자를 컴퓨터가 이해할 수 있는 신호로 만드는 것

문자 셋 : 인코딩과 디코딩을 위해 미리 정해진 규칙

문자 인코딩이란, 컴퓨터가 이해할 수 있는 바이너리로 어떤 방법을 사용해도 상관없는 방법론이고

문자 셋이란, 문자를 숫자로 매핑해주는 표이다.

예를 들어, base64 인코딩은 문자열을 아스키코드로 인코딩한 후 다시 base64 코드표를 통해 인코딩을 수행한다.

이미 컴퓨터가 이해할 수 있는 아스키 코드로 인코딩된 문자열을 새로운 base64 코드표로 인코딩한다는 것이다.

위의 예시와 같이 인코딩이란 바이너리를 생성하기 위한 과정이라고 볼 수 있다.

또한 아스키 인코딩과 같이 문자 셋과 문자 인코딩이 동일한 경우도 있기 때문에

인코딩이 문자 셋을 포함하고 있다고 생각할 수 있다.

ASCII (American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)

아스키 코드는 문자 그대로 미국에서 정의하고 있는 표준, 영문 알파벳을 사용하는 대표적인 문자 인코딩이다.

초창기 컴퓨터를 기계어만을 사용하여 개발하는것에 어려움이 있어 문자를 코드화하기 위해

아스키 코드가 탄생하게 되었고 대부분의 인코딩이 아스키에 기초하고 있다.

아스키는 7bit 인코딩으로 총 1byte(8bit)에서 7bit를 사용하여 128개의 문자를 표현할 수 있다. (0 ~ 127)

나머지 1bit는 에러 검출을 위한 Parity bit로 비워두어 총 1byte로 문자를 표현한다.

* 7개의 비트 중 1의 개수가 홀수면 1, 짝수면 0으로 설정된 Parity bit를 함께 전송함.

확장아스키코드(Extended ASCII) = ANSI 코드

앞서 말했듯이 컴퓨터와 인터넷이 전세계적으로 보급되며 영어권이 아닌 나라에서도 문자열 셋을 사용해야 했다.

그래서 기존 아스키 코드의 7bit가 아닌 8bit를 문자를 표현하는데 사용하여 총 256개의 문자를 표현할 수 있게 되었다. (128 ~ 255)

아래 사진은 메모장을 통해 알파벳과 한글 문자열들을 저장한 것이다.

HxD라는 프로그램을 통해 위의 TXT 파일이 어떻게 저장되는지 확인할 수 있다.

HxD : 바이너리 파일을 읽을 수 있는 무료 에디터 프로그램

아래 그림은 메모장에 저장된 문자열을 ANSI로 디코딩한 모습을 보여준다.

HxD를 통해 나온 결과물을 한번 살펴보자!

아스키코드표를 통해 A라는 심벌은 41이라는 HEX 값을 가짐을 확인할 수 있다.

여기서 HEX는 16진수로 결국 (4 X 16) + (1 X 1) = 65의 DEC(10진수)를 나타내는 것이다.

4bit의 값이 16개의 숫자를 나타낼 수 있기 때문에 HEX 값 하나는 4bit임을 알 수 있다.

위에서 살펴보았듯이 아스키코드는 총 8bit로 이루어져 있기 때문에 HxD에서 한칸이 아스키코드임을 알 수 있다.

결과적으로 우리가 입력한 A라는 문자열은 DEC로 65, HEX로 41이라는 숫자로 표현하기로 약속한 것이고,

컴퓨터에서는 BIN인 01000001로 저장된다는 것을 알 수 있다.

아스키코드표 : https://www.ascii-code.com/

멀티바이트 인코딩(Multibyte Encoding)

처음 멀티바이트 인코딩이 사용된 것은 CJK(Chinese-Japanese-Korean) 멀티바이트 인코딩으로

한국어, 중국어, 일본어는 문자의 수가 매우 많기 때문에 확장아스키코드 영역의 128개로도 부족했기 때문이었다.

따라서 1byte가 아닌 여러 byte를 통해 문자를 표현한 것이 멀티바이트 인코딩이다.

한국의 인코딩 방식은 여러 인코딩 방식을 거쳐왔다.

한글의 자음과 모음을 조합해서 표현할 수 있는 조합형 한글 인코딩

자음과 모음을 합쳐서 완성된 문자로 표현하는 완성형 한글 인코딩

완성형 인코딩에서는 EUC-KR : 2350자 / CP949(MS949) : 11172자 를 사용하게 되었고,

조합형 인코딩에서는 2byte 조합, 3byte 조합, N byte 조합과 같은 여러 방식을 사용하게 되었다.

많은 인코딩 방식을 사용하면서 서로 다른 인코딩 방식을 사용한 프로그램이나 문서 사이에서는 정상적으로 디코딩되지 않는 호환성 문제가 발생할 수 밖에 없었다는 것을 알 수 있다.

유니코드 (UNICODE)

멀티바이트 인코딩의 문제는 한국에 국한되는 문제가 아니었다.

한글뿐만 아니라 중국어, 일본어도 마찬가지로 각자의 언어를 표현할 수 있는 인코딩 방식과 다른 문자열 셋을 사용하기 때문에 모든 언어를 동시에 표현할 수는 없었다.

결국 전세계의 모든 문자를 하나의 문자 셋으로 표현할 수 없을까?라는 문제가 등장하게 된 것이다.

이러한 문제를 해결하기 위해 전세계적으로 사용되는 모든 문자 집합을 하나로 모아 탄생시킨 것이 유니코드이다.

유니코드의 목적은 현존하는 문자 인코딩 방법들을 모두 유니코드로 교체하려는 것이다.

유니코드는 존재하는 모든 문자들을 2byte(16bit)로 표현하려고 했으며, 이론적으로 65536개의 문자를 표현할 수 있다.

그러나 한글의 조합과 수 많은 한자들, 그리고 히라가나등, 중앙 아시아의 문자들을 2byte에는 모두 담지 못했다.

그래서 유니코드에서는 2byte를 가지는 평면을 여러개 만들어 이를 해결하고자 하였다.

평면을 나누기 위해 추가적으로 1byte를 사용할 수 있기 때문에 총 2~3byte를 통해 유니코드를 표현할 수 있다.

유니코드를 나타내는 U+와 16진수를 합쳐 U+0000에서 U+FFFF 까지 문자를 표현할 수 있으며,

앞에 평면을 위한 1byte인 U+00에서 U+FF를 추가할 수 있다. (총 256개의 평면 가능)

[예시] 1번 평면 U+01XXXX, 2번 평면 U+02XXXX 등

[0번] 유니코드 기본평면 (BMP : Basic Multilingual Plane)

앞서 말한 17개의 평면 중에 0번 평면이다.

기본평면에는 거의 모든 근대 문자와 특수 문자가 포함되어 있으며 한중일이 거의 대부분의 영역을 차지함을 확인할 수 있다.

기본 평면은 총 2byte로 U+0000 에서 U+FFFF로 표시한다.

[출처] 위키피디아/유니코드평면

[1 ~ 16번] 평면

1번 평면 : 보조 다국적 평면 / 옛 문자, 음악 기호, 수학 기호를 표현

2번 평면 : 보조 상형 문자 평면 / 초기 유니코드에 포함되지 않은 한중일 통합 한자를 주로 담고 있음

3번 평면 : 3차 상형문자 평면 / 갑골 문자, 금문 등의 문자와 한중일 통합 한자, 기타 옛 상형 문자를 위해 예약된 영역

4번 ~ 13번 : 미지정 평면

14번 평면 : 보조 특수 목적 평면 / 소수의 제어용 문자

15 ~ 16번 : 사용자 영역 / 특정 업체나 사용자 별로 할당하여 씀

한글 유니코드 : http://www.unicode.org/charts/PDF/UAC00.pdf

유니코드 : https://home.unicode.org/basic-info/overview/

문자 인코딩이란?

글 내용이 많지만 문자 인코딩이 궁금하다면 꼭 읽기 바란다.

우선 인코딩을 위키 백과에 나온 설명으로 보면 ‘정보의 형태나 형식을 변환하는 처리나 처리 방식이다.’ 라고 정의 되어 있다.

(출처 : https://ko.wikipedia.org/wiki/%EC%9D%B8%EC%BD%94%EB%94%A9)

즉, 어떤 정보를 미리 약속한 규칙으로 가공한다고 보면 된다.

인코딩은 문자, 동영상, 사진 등 다양하게 분야에서 많이 사용 되고 있다.

많은 인코딩 중 문자 인코딩에 대해 말하려고 한다.

먼저, 우리가 쉽게 접할 수 있는 문제로 보겠다.

문자 인코딩으로 인한 피해 사례

인터넷에 좋은 자료가 있어서 첨부 파일을 다운로드 받았는데 글이 다 깨져 있는 경우

어떤 사이트에 들어갔는데 사이트의 내용 글이 깨져 있는 경우

공개된 소스 코드 파일을 다운로드 받았는데 주석 내용이 깨져 있는 경우

내가 전달한 파일이 다른 사람에게는 그 파일 내용이 제대로 보이지 않을 때

위와 같이 문자가 깨져서 알아볼 수 없는 상황은 모두가 아마도 한번씩은 겪어 봤을 것이다.

원인이 뭘까?

글의 제목 때문에 짐작은 하고 있으리라 본다.

문제는 문자 인코딩이 다르기 때문이다.

예를 들어 설명 하겠다. (실제 규칙이 아닙니다.)

나는 “니 내 누군지 아니?”라는 내용을 저장해서 파일로 만들었다. 그 파일은 vigli 라는 인코딩 방법으로 저장된 파일이다.

vigli의 규칙은 아래와 같다.

문자 코드표 니 0 내 1 누 2 군 3 지 4 아 5 니 6 ? 7 (공백) 8 표1. vigli 인코딩의 코드표

눈으로는 ‘니 내 누군지 아니?’ 라고 보이지만 컴퓨터에 저장된 파일은 vigli 인코딩으로 ‘08182348567’ 이렇게 저장 되어있다.

그런데 상대방은 내가 보낸 파일을 vigli의 규칙과 동일한 규칙을 가진 인코딩이 아닌 다른 인코딩 방식으로 보기 때문에 08182348567’을 파일에서 읽었을때 사람의 눈으로 표현한 문자를 ‘뛝꿮뺭뾹쭭퀽’ 와 같이 보이게한다. 그래서 내가 원하는 내용과 다르게 보이는 것이다.

문자 코드표?

먼저, 인코딩을 설명하기 전 문자 코드표부터 설명을 해야겠다. 표1. vigli 인코딩의 코드표 를 보면 카테고리를 인코딩이 아닌 코드표라고 했다. 코드표는 컴퓨터가 인식하는 문자에 각각 id를 매긴 것이라고 생각하길 바란다. vigli의 코드표로 보자면 ‘니’ 라는 문자는 0이라는 id가 매겨져 있는거고, ‘내’라는 문자의 id는 1인 것이다.

컴퓨터는 문자를 인식하기 위해 ID를 매겨 코드표로 만들었고, 이것을 규칙으로 정하여 모든 나라가 동일한 코드표(표준이라 함)를 사용하게 하였다. 대표적으로는 아스키코드표와 유니코드표가 있다.

위의 자세한 설명이 있고 간단하게만 알고 싶다면 아래 설명을 읽기 바란다.

아스키 코드는 128개의 문자를 표현할 수 있다. 그러므로 영어 외에 모든 문자는 불가능 하다고 보면 된다. 그래서 모든 문자를 지원하기 위해 나온게 유니코드다. 유니코드는 아스키코드와의 호환을 위해 아스키코드의 128개의 문자 코드표는 그대로 사용한다. 때문에 지금은 유니코드를 사용한다.

그럼 문자 인코딩이 뭐지?

대표적인 문자 인코딩은 UTF-8, UTF-16, MS949, UCS-2 등이 있다. 실제 문자 인코딩은 더 많다.

어쨌든 문자 인코딩은 문자 코드표를 어떤 방식으로 변환하는 읽고 쓰는 것에 대한 방법이다.

그럼 왜 동일한 문자 코드표에 대해 표현 방식이 다를까? 예를 들어 설명한다.

컴퓨터의 저장 공간은 한정적이다. 그리고 CPU의 처리 데이터나 네트워크로 전송할 수 있는 데이터는 최대한으로 줄이는게 빠르고 좋다. 이 얘기를 왜 하느냐는 바로 지금 설명할 UTF-8, UTF-16 때문이다. 이 3가지를 설명하면 앞 선 얘기에 대해 왜 나왔는지 알 수 있을 것이다.

UTF-8

뒤에 숫자는 문자를 표현하는데 필요한 메모리 크기(bit)의 단위이다. 8이므로 8bit, 즉 1byte를 이야기 한다. 그리고 가변 길이 방식의 인코딩이다.

무슨 말이냐면 8bit, 정확히는 7bit안에 표현 가능한 문자는 하나의 문자를 표현하는데 1byte의 공간만을 차지한다. 그리고 그 범위를 벗어나는 문자는 1byte씩 더 메모리 공간을 사용한다. 그래서 어떤 문자를 표현하느냐에 따라 사용하는 공간이 다르기에 가변 길이 방식의 인코딩이라고 한다.

7bit로 표현 가능한건 1byte를 사용한다. 이 말은 아스키코드표에 속하는 문자는 모두 1byte만 사용한다는 얘기이다. 그리고 그 외의 한글 같은 문자는 더 많은 공간을 사용한다.

그럼 또 다른 의문이 생긴다. 바로 이 인코딩으로 표현된 문자가 메모리 공간을 얼마나 차지 할지에 대한 의문이다. UTF-8은 1byte를 넘는 문자에 대해 최상위 비트를 1로 표시한다. 이것을 보자면 다음과 같다.

표1. UTF 표현법 [출처 : https://ko.wikipedia.org/wiki/UTF-8 ]

표의 다른건 보지 말고 UTF-8에 해당 하는 부분만 보길 바란다. 최상위 비트가 0이면 1byte를 차지하는 문자(0xxx xxxx)인 것이고, 최상위 비트가 110이면 2bytes를 차지하는 문자(110x xxxx 10xx xxxx)인 것이다.

UTF-16

UTF-8과 다른거라고는 8이 16으로 바뀌었다는 것이다. 즉 문자를 표현하는 단위가 16bit. 즉 2bytes 공간을 차지하는 것으로 바뀐 것이다. 이것도 가변길이 방식의 인코딩이다.(문자가 정말 많아서 모든 문자를 다 표현하려면 5? 6? bytes가 필요했던 걸로 기억하는데 말 그대로 기억일뿐 정확하지 않다.)

하여튼 이 인코딩도 2bytes 로 표현 안되는 문자는 UTF-8처럼 이 문자가 2bytes 를 넘는다는 표시를 한다

표를 보면 내용중에 서러게이트(Surrogate) 라는 얘기가 있다. 이것은 무엇일까?

서러게이트는 여유 공간? 비어둔 공간? 이라고 보면 된다. 아직 맵핑하지 않은 문자에 대해 사용하기 위한 공간으로 상위 바이트 블록을 High Surrogate라 하고 하위 바이트 블록을 Low Surrogate라 한다. 그리고 둘 중 하나만 올 수 없고 꼭 쌍으로 같이 나와야한다. 표에 보면 y와 z가 해당 부분에 속한다.

그리고 표에서 설명 안한 부분인 UTF-16BE. UTF-8 은 BE가 없지만 16은 붙어있다. 이건 Big-Endian 의 약자이다. 이 부분에 대해 알고 싶다면 아래 페이지에서 보길 바란다.

BOM이란? http://vigli.tistory.com/57

UTF-8, UTF-16, 그리고 설명은 안했지만 UTF-32. 어떤걸 쓰느냐에 대한 답은 없다. 목적에 적합한 인코딩을 쓰는게 답이다.

그리고 CP949나 euc-kr도 utf 처럼 문자를 표현하는 자신만의 방법을 만든 것 뿐이다.

여하튼, 인코딩을 정리하면 이렇다.

인코딩은 어떤 문자에 대해 어떤 방식으로 표현하는지 약속인 것이다. 그래서 그 약속이 다르면 서로가 자신이 의도한 문자 표현이 안되는 것이다.

그럼 인코딩으로 알아본 피해 사례에 대한 해결 방법은?

1. 서로 인코딩을 동일하게 해서 읽고 쓴다.

2. 왠만하면, UTF-8을 기본으로 쓴다.

인코딩(Encoding)이란 ? : ASCII, URL, HTML, Base64, MS Script 인코딩

webhacking.kr 회원가입 문제를 해결하면서 Base 64 디코딩을 활용했다.

네트워크 전공 시간에 다양한 디코딩 방법을 이용해 문제를 해결했던 기억을 되살려 인코딩이 무엇이며 어떠한 종류가 있는 지에 대해 살펴보도록 하겠다.

1> 인코딩이란?

정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식 → 즉, 컴퓨터가 이해할 수 있는 형식으로 바꾸어주는 것.

내용에는 변화가 없고, 암호화로는 사용이 불가능하다.

인코딩의 종류에는 ASCII, URL, HTML, Base64, MS Script 등이 있다.

2.1> ASCII 인코딩

ASCII (American Standard Code for Information Interchange) : 미국 정보교환 표준 코드

영문자를 컴퓨터가 해석할 수 있는 숫자로 변환시켜 준다.

1Byte(8bit)중 7bit를 사용하여 0~127까지 총 128개의 문자를 구성한 코드

128개의 문자는 영어 알파벳 대문자, 소문자, 보조문자, 제어문자로 구성되어 있다.

아스키 테이블 표

2.2> URL 인코딩

ASCII코드에 없는 영어를 제외한 외국어(한국어 포함)와 ASCII코드에서 표현하지 않는 특수문자를 표현하기 위해 사용된다.

형식 : 기존 문자열의 HEX값 앞에 ‘%’ 사용 (ASCII Table의 출력가능 문자)

한글 : UTF-8 사용

Force Full URL Encoding : 모든 문자열을 강제로 인코딩

URL은 ASCII 문자 집합을 사용하여 인터넷을 통해서만 전송할 수 있다.

2.2.1> 중요 URL 메타문자

종류 URL 코드 특징 ? %3F 인자(파라미터)를 넘겨줄 때 사용 & %26 각각의 인자를 구분할 때 사용 = %3D 인자 전달자로서 인자값을 인자로 전달할 때 사용 % %25 16진수(Hex) 값을 표현할 때 사용 + – 공백 문자를 표현할 때 사용 NULL(공백) %00 공백을 표현할 때 사용

2.2.2> url 인코딩 예제

http://www.convertstring.com/ko/EncodeDecode/UrlEncode

다음은 url 인코딩을 해주는 사이트이다.

인코딩하고자 하는 텍스트인 ‘url 인코딩을 해보자!’ 를 입력했더니

다음과 같은 결과가 나왔음을 확인할 수 있었다.

2.3> HTML 인코딩

HTML 문서 안에는 스크립트와 같이 특수한 기능을 하는 문자들이 포함된다. 악의적인 특수기능을 막기 위해 인코딩하여 안전하게 HTML문서와 함께 사용하기 위해서 HTML 인코딩을 사용한다.

ASCII코드값을 기준으로 인코딩 된다. EX) A(ASCII 값==65) — HTML 인코딩 → %#65;

특징 : 코드의 앞에 %#문자 가 포함된다.

HTML 인코딩은 XSS(크로스 사이트 스크립트)의 방어 대책으로 사용된다.

2.3.1> HTML Table

HTML ENCODING 공백 < < > > & & ‘ ‘ ” ”

2.3.2> HTML 인코딩 예시

http://www.convertstring.com/ko/EncodeDecode/HtmlEncode

HTML 인코딩을 해주는 사이트를 통해 HTML 인코딩을 해보자.

인코딩 하고자하는 코드 HTML 인코딩 된 결과

2.4> BASE 64 인코딩

이메일 사용을 위한 인터넷 표준 포맷인 MIME를 사용하기 위해 사용한다.

SMTP라는 이메일 전송 프로토콜도 존재하지만 ASCII는 7bit문자만 지원하기 때문에 더 많은 문자를 표현하기 위해 사용된다.

2진 데이터를 ASCII 형태의 텍스트로 표현 가능하다.

WEB인증 중, 기본인증에 사용된다.

64개의 문자를 사용한다. ( 영문 대,소문자, 숫자, +, / )

특징 : 코드의 마지막에 = 또는 ==문자가 포함된다.

Base 64 인코딩은 8bit의 문자를 6bit단위로 나누어 준다. 각각의 6bit를 Base64 인코딩 테이블과 매칭시키는 방식을 사용한다.

BASE 64 표

2.4.1> BASE 64 인코딩 순서

1) 아스키 테이블 맵핑

2) 2진수 변환

3) 6bit 단위로 분할

4) 10진수 변환

5) BASE64 테이블 맵핑

6) 패딩연산( 총 비트수 % 3 => 0 : 없음, 1 : =, 2: == )

2.5> MS Script

Microsoft에서 제공하는 인코딩 기법으로 IE에서만 사용가능

IE는 MS Script Decoder를 가지고 있음