본문 바로가기
Back-end

문자열 encoding에 대한 정리, UTF-8이란??

by kkkdh 2022. 11. 1.
728x90

우리가 흔히 코딩을 진행할 때, 다음과 같이 한글이 깨지는 현상을 마주치게 됩니다.

한글 깨짐 예시, 사진 출처: https://blog.naver.com/PostView.nhn?blogId=tongple&logNo=220867154978

이러한 문제는 보통 한글을 포함한 우리가 사용하는 문자에 대해 인코딩 방식이 잘못 설정되어있기 때문에 발생합니다!

 

그렇다면, 대체 이 문자열 인코딩 방식이 뭐고, 왜 해야 하는지에 대한 개념을 정리해 보겠습니다.


문자열 인코딩을 왜 하지??

컴퓨터는 0 또는 1로 모든 정보를 저장하는 특성을 갖기 때문에, 우리 인간이 사용하는 다양한 종류의 문자들을 컴퓨터에 저장하기 위해서는 별개의 방식이 필요합니다.

 

따라서 인간이 사용하는 각각의 문자에 맞춰 숫자로 매핑한 표인 문자열 세트라는 것을 만들게 되었습니다. 이 문자열 세트에는 각 문자가 어떤 숫자에 대응되는지에 대한 정보를 갖고 있습니다.

 

우리가 흔히 알고 있는 아스키 코드 표(ascii code) 또한 문자열 셋 중 하나에 해당하는데, 아스키코드 같은 경우에는 초창기 미국에서 만들어진 문자열 셋이기 때문에, 미국에서 사용하는 단어만 포함되어 있다는 단점이 있습니다.

 

따라서 다른 언어 체계를 가진 여러 국가가 자신들의 언어를 기준으로 여러 문자열 셋을 만들게 되었고, 그로 인하여 굉장히 다양한 종류의 문자열 셋이 등장하게 됩니다.

 

이렇게 많은 문자열 셋이 등장한 것을 하나의 표에 몽땅 때려 박아? 서 만들어진 문자열 셋이 unicode(유니코드)이며, unicode를 해석하는 인코딩 방식 중 하나가 우리가 흔히 알고 있는 utf-8입니다.


인코딩(Encoding)은 또 뭐지??

인코딩이라는 용어는 어떤 것을 다른 형식으로 변환하는 행위를 가리키는 말입니다.

 

개발 용어로도 사용되지만, 동영상 인코딩 등.. 다양한 영역에서 인코딩이란 말이 사용됩니다.

 

문자 인코딩 방식 또한 문자열 셋과 같이 굉장히 많은 종류가 있는데, 그중에서도 UTF-8을 가장 많이 사용하며 그 이유는 오류가 적기 때문이라고 합니다!


URL encoding

URL에는 아스키코드의 문자 집합만 사용이 가능한데, 우리는 parameter로 다른 문자 섞어서 보내기도 한다.

따라서 스페이스나 한글 등의 문자를 약속된 ascii code의 형태로 변환해주게 되는데, 이것을 담당하는 것이 URL encoding입니다.

 

문자열의 경우에는 위와 같이 문자열 셋에 맞는 인코딩을 통해 컴퓨터에서 해석하기 때문에 텍스트 파일은 인코딩을 진행한 후에 저장하는 방식이며, 이미지, 동영상 등의 파일은 바이너리 파일 형태 그대로 컴퓨터에 저장됩니다.

 

따라서 문자형은 물리적인 단위가 아닌 논리적인 단위라고 할 수 있다고 합니다.

왜냐하면, 이미지 파일은 파일을 논리적으로 읽는 것이 아닌, binary data(bytes type)을 그대로 읽고 쓰기 때문에 물리적인 단위인 반면, 인코딩을 진행하는 문자형 데이터를 논리적인 단위라고 설명하는 것 같습니다.

이렇게 파이썬 언어로 이미지 파일의 타입을 확인을 직접 해보면, 이미지 파일은 문자열과는 다르게 그냥 binary data(bytes type)을 그대로 읽고 쓰는 방식을 취하는 것을 확인 가능합니다.

728x90

댓글