본문 바로가기
컴퓨터구조

Character Set과 인코딩(ASCII/EUC-KR/UTF-8)

by daisy035510 2023. 4. 6.
반응형

개발 서버에서 로컬로 가져와 노트패드에서 파일의 길이를 체크하는데 인코딩 방식이 달라(byte 길이) 개발하는데 난항을 겪은 경험이 있다. 그래서 이번 기회에 정리하는 인코딩 개념! 😃

 

Character Set (문자집합)

- 컴퓨터가 인식할 수 있는 문자 모음, 문자 집합에 속한 문자를 인코딩하여 0과 1로 표현한다

 

ASCII (아스키) 

- 초창기 문자 집합 중 하나, 영어 알파벳과 아라비아 숫자 그리고 일부 특수문자 포함 예) 'A' -> 65, 'a' -> 97

- 0~127까지 수가 할당되어 아스키 코드로 인코딩

- 7bit 사용(원래는 8bit 인데 나머지 1bit는 parity bit라는 오류 검출용)

- ASCII에서는 영어만을 고려하여 만들어졌고, 일본어 중국어 등 다른 언어는 표현이 불가능하다

 

ANSI(American National Standard Institute)

- ANSI는 8bit로 구성되어 있으며 256개의 문자를 표현할 수 있다

- ANSI는 ASCII의 확장판으로 이해하면 된다

- '한글'을 EUC-KR로 인코딩하면 4byte

 

EUC-KR

- EUC-KR 은 한글을 2byte로 인코딩 크리고 인코딩할 수 있는 완성형 인코딩 방식이다

- EUC-KR 로 한글을 총 2,350개 인코딩 가능하지만 '쀍, 쀓, 믜' 같은 인코딩은 불가하다

- '한글'을 EUC-KR로 인코딩하면 4byte

 

CP949

- EUC-KR처럼 일부 한글은 인코딩 안되는 문제를 해결하기 위해 등장했다

- 그래도 다양한 문자 인코딩 하기 어렵다

 

UTF-8

- 나라마다 다른 인코딩을 구현한다면 다국어 페이지처럼 각 나라의 언어르 인코딩을 모두 알아야하는 번거로움이 있는데  그래서 등장한 것이 유니코드

- 유니코드는 여려나라의 문자들을 광범위하게 표현할 수 있는 통일된 문자 집합

- UTF-8, UTF-16, UTF-32 는 유니코드 문자의 인코딩 방식

- 여기서 주의해야 할 것이 유니코드는 '인코딩'이 아니라는 것이다. 유니코드는 전세계 거의 모든 문자를 칭한다

- '한글' 을 UTF-8로 인코딩하면 6byte

 

❗️통일된 인코딩 방식을 구현하고자 유니코드가 등장한 것

ASCII -> ANSI → EUC-KR -> CP949 -> UTF-8

- 현재는 UTF-8을 가장 많이 씀

 

🐥 서버에서 파일 character set  인코딩 명령어

인코딩 확인

명령어 : file -bi abc.txt 

결과 : text/html; charset=utf-8

 

인코딩 변환

명령어 : iconv -c -f utf-8 -t euc-kr abc.txt > test.txt

반응형