UTF-7
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
UTF-7은 이메일 헤더 인코딩을 위해 설계된 유니코드 변환 형식으로, ASCII 범위를 벗어나는 문자를 처리하기 위해 개발되었다. MIME의 전송 인코딩 제약으로 인해 UTF-7은 MIME 인코딩된 단어 내에서 문자 집합을 식별해야 했다. UTF-7은 RFC 1642에서 처음 제안되었지만, 이후 표준이 아닌 RFC 2152에 의해 무효화되었다. 이 형식은 처리하기 어렵고 보안 문제로 인해 현재 사용이 권장되지 않으며, 수정된 UTF-7은 IMAP에서 국제 메일함 이름에 사용된다. UTF-7은 ASCII 문자를 직접 표현하고, 다른 문자는 UTF-16으로 인코딩한 후 수정된 Base64로 변환하는 방식으로 작동한다. 보안 취약성으로 인해, UTF-7은 더 이상 널리 사용되지 않으며, .NET과 같은 최신 시스템에서는 지원이 중단되었다.
더 읽어볼만한 페이지
- 유니코드 변환 형식 - UTF-8
UTF-8은 유니코드 문자를 표현하는 가변 길이 문자 인코딩 방식으로, ASCII 코드와 호환성을 유지하며 다양한 언어의 문자를 표현할 수 있도록 설계되었지만, 보안 문제점과 공간 효율성 측면에서 단점을 가진다. - 유니코드 변환 형식 - UTF-1
UTF-1은 유니코드 초기 버전을 인코딩하기 위해 1992년에 설계된 가변 길이 문자 인코딩 방식으로, ASCII 호환성을 유지하고 ISO 2022 및 MIME과의 호환성을 고려했지만, "모듈로 190" 산술을 사용하는 특징과 현대 유니코드 표준과의 차이점을 가진다. - 유니코드에 관한 - UTF-8
UTF-8은 유니코드 문자를 표현하는 가변 길이 문자 인코딩 방식으로, ASCII 코드와 호환성을 유지하며 다양한 언어의 문자를 표현할 수 있도록 설계되었지만, 보안 문제점과 공간 효율성 측면에서 단점을 가진다. - 유니코드에 관한 - UTF-1
UTF-1은 유니코드 초기 버전을 인코딩하기 위해 1992년에 설계된 가변 길이 문자 인코딩 방식으로, ASCII 호환성을 유지하고 ISO 2022 및 MIME과의 호환성을 고려했지만, "모듈로 190" 산술을 사용하는 특징과 현대 유니코드 표준과의 차이점을 가진다. - 문자 인코딩 - 유니코드
유니코드는 세계의 모든 문자를 하나의 컴퓨터 인코딩 표준으로 통합하기 위해 설계되었으며, 유니코드 컨소시엄에 의해 관리되고 UTF-8, UTF-16, UTF-32 등의 부호화 형식을 제공하지만, 일부 문자 표현 문제, 버전 간 비호환성, 레거시 인코딩과의 호환성 문제 등의 과제를 안고 있다. - 문자 인코딩 - UTF-8
UTF-8은 유니코드 문자를 표현하는 가변 길이 문자 인코딩 방식으로, ASCII 코드와 호환성을 유지하며 다양한 언어의 문자를 표현할 수 있도록 설계되었지만, 보안 문제점과 공간 효율성 측면에서 단점을 가진다.
UTF-7 |
---|
2. 역사적 배경
UTF-7은 1990년대 중반, 이메일 시스템에서 유니코드 문자를 안전하게 전송하기 위해 제안되었다.
MIME은 이메일 형식의 현대 표준으로, ASCII 범위를 초과하는 바이트 값을 사용하여 헤더를 인코딩하는 것을 금지한다. MIME은 ASCII보다 넓은 다양한 문자 집합으로 메시지 본문을 인코딩하는 것을 허용하지만, 주요 이메일 전송 표준인 SMTP은 여전히 8비트 클린을 보장하지 않는다. 따라서 의심스러운 경우 비자명한 콘텐츠 전송 인코딩을 적용해야 한다. 불행히도, Base64는 비-MIME 클라이언트에서 ASCII 문자를 읽을 수 없게 만드는 단점이 있다. 반면에, UTF-8과 quoted-printable의 조합은 BMP에서 비-ASCII 문자에 6~9바이트, BMP 외부의 문자에 12바이트가 필요한 매우 크기 비효율적인 형식을 생성한다.[3]
62개의 영문 알파벳 및 숫자와 9개의 기호(' ( ) , - . / : ?)는 직접 표현된다. (직접 문자) 선택적 직접 문자를 사용하여 크기를 줄이고 가독성을 높일 수 있지만, 손상 가능성이 높아진다. 공백, 탭, 캐리지 리턴, 줄 바꿈 문자는 직접 표현될 수 있지만, 이메일 전송 시 주의가 필요하다. 그 외의 문자는 UTF-16으로 인코딩된 후, 수정된 Base64로 인코딩된다. 더하기 기호(+)는 '+-'로 인코딩된다.
0010 0000 0010 0000
3. 동기
4. 특징
수정된 Base64에 대한 예시는 다음과 같다. 파운드 기호 U+00A3는 다음과 같이 Base64로 표기한다. 남은 2비트는 0으로 채워진다.16진수 0 0 A 3 colspan="2" | 비트 패턴 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 인덱스 0 10 12 Base64 인코딩 A K M
5. 인코딩 및 디코딩 알고리즘
0x00A3 ≡ £
0x2020 ≡ †16비트마다 UTF-16BE의 문자 코드로 해석 0000000010100011 0010000000100000 £† 디코딩 결과