요약

  • 1995년 8월의 RFC 1843은 ASCII와 GB2312 중국어를 섞어 담는 7비트 형식 HZ를 설명한다. ~{는 GB 모드로 들어가고, ~}는 ASCII로 돌아오며, ~~는 물결표 하나를 출력한다.
  • 기본 디코더는 줄 길이 제한 없이 바이트 흐름을 읽는다. RFC는 별도로 more 같은 도구를 위해 인코더가 물리적 줄을 80자 미만으로 만들기를 권했다. GB 구간을 닫고 다음 줄에서 다시 열면 복원된 본문은 이어진다.

작은 기호가 읽는 법을 바꾸다

ASCII 중심의 컴퓨터 환경에서는 화면에 보이는 한 바이트의 뜻이 이미 익숙했다. 중국어 문자는 당시 코드에서 두 바이트가 필요했고, 기계마다 내부 저장 방식도 달랐다. Fung Fung Lee의 HZ 문서는 GB2312를 교환용 공통 문자 집합으로 삼아 전자우편을 비롯한 7비트 경로로 영어와 중국어가 섞인 글을 보내는 방법을 제안했다. RFC 발표는 1995년이다. 문서 초록에는 내용이 Lee가 1989년 9월에 쓴 동명 글과 같다고 적혀 있다. 아이디어는 RFC 번호를 받기 전부터 길을 찾고 있었다.

HZ의 출발점은 ASCII 모드다. 보통 문자는 그대로 지나가고, 물결표가 나타나면 뒤따르는 글자 하나를 본다. ~~는 물결표 자체, ~{는 GB 모드의 시작, 물결표 바로 뒤의 LF는 해독 결과에 아무 글자도 남기지 않는 줄 이어쓰기다. GB 모드에서는 바이트를 둘씩 묶어 읽다가 ~}가 나오면 ASCII로 돌아간다. 같은 숫자의 바이트라도 현재 어느 모드에 있는지에 따라 다른 의미가 생긴다. 디코더가 기억해야 할 것은 방금 통과한 작은 문이다.

물결표를 고른 데에는 숫자상의 이유가 있었다. RFC에서 GB 문자의 첫 바이트는 16진수 $21부터 $77, 둘째는 $21부터 $7E다. 인쇄 가능한 ASCII 값은 이 범위와 겹친다. 물결표의 값 $7E는 GB 첫 바이트 범위 밖에 있으므로, 정상적인 중국어 문자 앞부분과 혼동하지 않고 전환을 알릴 수 있다. 키보드에서 가볍게 치는 기호가 바이트 흐름의 교통경찰이 된 것이다.

영어 부분은 읽기 편한 모습으로 남았다. 물결표만 두 번 적어야 하고, 일반 ASCII 글자는 그대로 파일에 놓인다. 중국어와 물결표가 없는 HZ 파일은 보통 ASCII 파일과 같은 모양이다. 영어 문장 안에 중국어 표현을 넣고 다시 영어로 나올 수 있다. 문서 전체를 한 덩어리로 감추기보다 필요한 곳마다 읽는 방식을 바꾸는 설계였다.

줄 바꿈은 별도의 재미다. 물결표 뒤의 LF는 물리적 파일에는 남지만 복원한 글에서는 사라진다. 발신자는 긴 줄을 두 줄로 접으면서 본문에 새 줄을 끼워 넣지 않을 수 있다. RFC 1843은 기본 HZ 디코더가 ‘줄’이라는 개념에 의존할 필요가 없다고 명시한다. 파일 전체가 긴 한 줄이어도 되고, 줄바꿈이 전혀 없어도 된다. 현재 모드를 기억하고 최대 한 글자 앞을 보면 충분하다. 서로 다른 프로그램이 공유해야 할 계약은 그 정도로 작았다.

사람이 쓰는 터미널에는 폭이 있다. Lee는 Unix의 more 같은 페이지 보기 프로그램을 위해 인코더가 실제 줄을 80자 미만으로 만들 것을 권했다. 중국어 부분이 줄 끝에 걸리면 ~}로 GB를 닫고 물결표와 LF로 이어 쓴 뒤, 다음 물리적 줄에서 ~{로 GB를 다시 연다. 파일의 바이트 수는 조금 늘지만 복원한 문장은 그 자리에서 끊기지 않는다. RFC의 예시는 배열이 다른 여러 파일이 같은 글로 돌아오는 모습을 보여 준다.

이 줄 폭은 기본 HZ 형식 위에 놓인 인코딩 방식이었다. 한 발신자는 페이지 보기 도구에 맞춰 짧은 줄을 쓰고, 다른 발신자는 긴 흐름을 그대로 둘 수 있었다. 받는 쪽의 기본 디코더는 두 파일을 모두 읽었다. Lee는 현재 모드를 알고 있으면 뒤로 거슬러 읽기도 쉽고, 터미널 에뮬레이터가 백스페이스를 다룰 때 도움이 된다고 적었다. 보내기만큼 편집과 화면 표시에도 관심을 둔 설계였다.

1996년의 RFC 1922는 ISO-2022-CN이라는 다른 방식으로 중국어 인터넷 메시지를 다루며 줄마다 지정과 시프트에 관한 규칙을 두었다. HZ의 고유한 장면은 물결표의 두 모드 전환과, 실제 줄의 폭을 기본 해독 문법 바깥에서 고를 수 있게 한 선택이다. 7비트 길이 갑자기 넓어진 것은 아니다. 길 안내 표지판이 작고 정확해졌을 뿐이다.