TAG

#Encoding

10 posts

글자가 깨졌을 때 - 증상만 보고 어디부터 볼지 고르기

CS · Encoding

글자가 깨졌을 때 - 증상만 보고 어디부터 볼지 고르기

깨진 글자의 생김새는 아무렇게나 정해지지 않는다. 물음표 마름모, 네모 상자, 엉뚱한 한자는 각각 다른 곳이 어긋났다는 신호다. 이 시리즈를 한 장의 판단표로 접는다.

0과 1로 어떻게 담나 9편

Base64와 퍼센트 인코딩 - 바이트를 글자로 포장하기

CS · Encoding

Base64와 퍼센트 인코딩 - 바이트를 글자로 포장하기

글자만 지나갈 수 있는 길에 바이너리를 실어 보내야 할 때가 있다. 그럴 때 쓰는 포장이 Base64와 퍼센트 인코딩이다. 왜 크기가 늘어나는지, 그리고 왜 이걸 암호로 착각하면 안 되는지를 본다.

0과 1로 어떻게 담나 8편

글자 수 세기 - 이모지 하나가 일곱 글자로 세지는 이유

CS · Encoding

글자 수 세기 - 이모지 하나가 일곱 글자로 세지는 이유

입력창에 100자 제한을 걸었는데 사용자는 40자만 쓰고도 막힌다. 사람이 세는 글자와 컴퓨터가 세는 단위가 층마다 다르기 때문이다. 눈에 같아 보이는 두 글자가 서로 다른 데이터인 경우도 여기서 나온다.

0과 1로 어떻게 담나 7편

UTF-8 - 상자 크기를 글자마다 다르게 고른 결과

CS · Encoding

UTF-8 - 상자 크기를 글자마다 다르게 고른 결과

15만 개가 넘는 번호를 바이트에 담는 방법은 여럿이었는데 UTF-8이 세상을 다 먹었다. 이긴 이유는 영리한 압축이 아니라 옛 파일을 하나도 안 건드렸다는 데 있다.

0과 1로 어떻게 담나 6편

아스키에서 유니코드로 - 번호부를 하나로 합치기까지

CS · Encoding

아스키에서 유니코드로 - 번호부를 하나로 합치기까지

처음엔 글자 128개면 충분했다. 나라마다 남은 자리를 제 맘대로 쓰면서 같은 번호가 서로 다른 글자를 가리키게 됐고, 문서는 국경을 넘을 때마다 깨졌다. 유니코드는 그 혼란을 어떻게 끝냈나.

0과 1로 어떻게 담나 5편

부동소수점 - 0.1 더하기 0.2가 0.3이 아닌 이유

CS · Encoding

부동소수점 - 0.1 더하기 0.2가 0.3이 아닌 이유

거의 모든 언어에서 0.1 + 0.2는 0.3이 아니다. 버그가 아니라 소수를 담는 방식이 그렇게 생겼다. 왜 못 맞추는지, 왜 큰 수일수록 더 성겨지는지, 그리고 돈을 여기에 담으면 안 되는 이유를 본다.

0과 1로 어떻게 담나 4편

정수와 넘침 - 21억 다음에 오는 것

CS · Encoding

정수와 넘침 - 21억 다음에 오는 것

정수를 담는 칸은 자리 수가 정해져 있다. 그 칸을 넘어서면 프로그램은 멈추지 않고 조용히 이상한 값을 내놓는다. 왜 최대값 다음이 최소값인지, 왜 하필 한가운데서 터지는지를 본다.

0과 1로 어떻게 담나 3편

비트와 바이트 - 자리가 하나 늘면 세상이 두 배가 된다

CS · Encoding

비트와 바이트 - 자리가 하나 늘면 세상이 두 배가 된다

컴퓨터가 담는 칸은 켜짐과 꺼짐 둘뿐이다. 그 칸이 하나 늘 때마다 담을 수 있는 것이 두 배가 되고, 여덟 개를 묶은 바이트가 모든 이야기의 기본 단위가 된다. 16진수가 왜 굳이 끼어드는지도 여기서 풀린다.

0과 1로 어떻게 담나 2편

인코딩 - 컴퓨터는 글자를 모른다

CS · Encoding

인코딩 - 컴퓨터는 글자를 모른다

화면 가득한 글자를 컴퓨터는 하나도 모른다. 저장된 것은 숫자뿐이고, 그 숫자를 글자로 되돌리는 건 미리 나눠 가진 약속이다. 그 약속이 어긋날 때 무슨 일이 벌어지는지부터 본다.

0과 1로 어떻게 담나 1편

암호화가 푸는 문제 - 무엇을 감추고 무엇은 못 감추나

Cryptography · Encryption

암호화가 푸는 문제 - 무엇을 감추고 무엇은 못 감추나

암호화·해싱·인코딩은 다른 일을 한다. 되돌릴 수 있느냐로 셋을 가르고, 암호가 지키는 세 가지와 못 지키는 것까지 본다.

암호는 무엇을 지키나 1편