다음 이전 차례

16. UTF-8 터미널 에뮬레이터와 관련된 이슈는 무엇인가?

VT100 터미널 에뮬레이터들은 다른 문자셋들 사이를 전환하기 위해서 IS O 2022(= ECMA-35 ) ESC 시퀀스를 받아들인다.

UTF-8은 ISO 2022의 관점에서 보면 "다른 코딩 시스템(other coding sys tem)"이다(ECMA 35의 섹션 15.4를 보라). UTF-8은 ISO 2022 SS2/SS3/G0/G1/ G2/G3이 속하는 세계의 외부에 있다. 그러므로 만약 ISO 2022에서 UTF-8로 전환하면, 모든 SS2/SS3/G0/G1/G2/G3 문은 UTF-8을 벗어나 다시 ISO 2022로 돌아가기 전까지는 의미를 잃게 된다. UTF-8은 국적이 없는 인코딩이므로, 스스로 종결시키는(self-terminating) 짧은 길이의 바이트를 갖는 시퀀스( short byte sequence)는 전환하는 문장과는 독립적으로 어떤 문자가 의미가 있는지를 완벽하게 판정한다. ISO 10646-1 안의 G0와 G1은 ISO 8859-1의 그것들과 같다. 그리고 G2/G3는 ISO 10646 내에 존재하지 않는다. 왜냐하면 모든 문자는 고정된 위치를 가지며 어떤한 변경도 일어나지 않기 때문이다 . 우연히 바이너리 파일을 터미널에 덤프한 후에 터미널이 이상한 그래픽- 문자 모드로 전환된 채 남아있는 것은 UTF-8에서는 가능하지 않다. 이것은 UTF-8 모드에 있는 어떤 터미널을 ISO 2022 모드 일때보다 훨씬 더 강력하 게 동작하도록 한다. 그러므로 터미널이 우연히 ISO 2022 모드로 돌아갈 수 없도록 그것을 UTF-8 모드로 고정시켜 놓는 것이 효과적이다.

ISO 2022 표준은 ISO 2022 모드에서 벗어나기 위한 이스케이프 문자 %의 시퀀스 범위를 명시하고 있다(다른 코딩 시스템 지정, DOCS). 그리고 그러 한 수많은 시퀀스들은 UTF-8을 위해서 ISO 2375 문자 코드 셋 국제 등록부(I nternational Register of Coded Character Sets)의 섹션 2.8에 등록되 었다.

터미널 에뮬레이터가 UTF-8 모드에 있는 동안에 G2/G3로 전환시키는 이 스케이프 시퀀스와 같은 모든 ISO 2022 이스케이프 시퀀스는 무시된다. UTF -8 모드에서 동작하는 터미널 에뮬레이터 상의 유일한 ISO 2022 시퀀스는, UTF-8에서 ISO 2022 체계로 다시 전환시키는 ESC %@이다.

비록 UTF-8 모드가 0x80에서 0x9F까지의 범위를 갖는 바이트 공간을 사 용하지만, 여전히 CSI와 같은 C1 제어 문자들을 사용하는 것을 허용한다. U TF-8 모드에 있는 터미널 에뮬레이터는 어떤 제어 문자를 해석하기 전에 UTF-8 디코더를 입력되는 바이트 스트림에 적용해야만 한다 는 것을 이해하는 것이 중요하다. C1 문자들은 U+007F를 넘는 다른 문자들 처럼 UTF-8 모드로 디코딩된다.


다음 이전 차례