개발자들은 개발을 하다보면 한글 출력부분에 있어서,
혹은 엑셀파일을 메모장에서 열거나 반대로 메모장을 엑셀에서 열거나 하면 한글이 깨지는 경험을 해본적이 있을것이다.
우선컴퓨터는 0과 1을 가지고 binary값으로 데이터와 정보를 읽고 쓴다.
숫자는 가능하지만 문자는 숫자로 나타나기엔 한계가 있기에 문자에도 특정 번호를 매긴다.
예를들어 A=65, B=66... 그리고 소문자역시 a=97부터 사용을 하고 이것을 ascii 코드라고 한다.
이 숫자는 십진법에서 이진법으로 변환을 하여 예를 들어 A, 65 = 1000001 로 표시가 될수 있다.
자세한것은 아래 표를 참고하자.
사람이 문자를 입력하면 컴퓨터는 2진법으로 저장하고 보여줄때 다시 문자로 변환해서 알려주게 된다.
여기서 문자를 입력한것을 2진법으로 저장하는것을 문자 인코딩이라고 한다.
근데 이건 기본적인 영어는 가능하지만 문자열 인코딩의 종류는 엄청나게 많다.
그중 한글이 지원되는것도 있고 또 어느나라에서는 그 자국어가 지원이 되는 인코딩이 있고 다양하다.
이 인코딩이 맞질 않아서 글자가 깨져서 보이게 되는것이다.
근데 그것을 방지하기 위해서는 인코딩을 Unicode로 변경을 하면 된다.
유니코드란 전세계 모든 언어를 하나의 인코딩으로 모두 때려박아둔 것이다.
각 나라마다 각언어마다 제각각의 인코딩이 아닌 하나로 모든것이 통일 된것이다.
일단 유니코드는 A라는 문자를 숫자 65로 바꾸는 위와 같은 표를 말하는것이고, 이 65를 2진수로 변환하기 위해서는 인코딩을 다시 한번 거쳐야한다.
이때는 UTF-8의 인코딩을 거치는게 유니코드의 기본 변환 인코딩이다. 이밖에 utf 16 ,32도 있지만 눈치채셨을수도 있는데 이 뒤의 숫자는 그 문자가 차지할 바이트의 크기이다.
그래서 유니코드와 호환이 되면서 메모리적으로 문제도 적고 구분 가능한 UTF 8 이 전세계적으로 가장 많이 사용되게 되는 이유이다.
인코딩이란 문자열말고도 영상 편집 등에서도 사용되는데 어떤 형식을 다른 형식으로 바꾸는것을 인코딩이라 하기에 그렇다.
그 반대는 디코딩이라고 한다.
또 프로그래밍에서는 URL 인코딩이라는 개념도 존재한다.
예를들어 서버에 데이터를 보낼때 URL에 ?value=한글 이라고 값을 보낼순 있지만 URL은 특성상 ascii코드만 받을수 있기에 ascii 로 변환이 안되는것들은 일정 규칙에 의해서 변환이 되고 그리하여 지금 상태의 url만 봐도 % 기호나 이상한 대문자 알파벳이 공존한걸 보실수 있다.
아래와 같이 구글에 한글을 검색하게 되면 url에서 볼수가 있다.
'IT > Knowledge' 카테고리의 다른 글
DNS란? (49) | 2022.03.29 |
---|---|
IP주소에 대해서 (35) | 2022.03.27 |
재귀 함수란? (recursive function) (36) | 2022.03.25 |
동기 / 비동기 프로그래밍 (43) | 2022.03.24 |
Cookie ? Session? Cache? (53) | 2022.03.23 |
댓글