UTF-EBCDIC

UTF-EBCD

UTF-EBCDIC은 1~5바이트(8비트)의 코드 단위를 사용하여 Unicode의 모든 1,112,064개의 유효한 문자 코드 포인트를 부호화할 수 있는 문자 인코딩입니다(UTF-8[1]경우 최대 4개).메인프레임의 레거시 EBCDIC 응용 프로그램이 문자를 쉽게 처리할 수 있도록 EBCDIC 친화적입니다.기존 EBCDIC 기반 시스템의 장점은 기존 ASCII 기반 시스템의 UTF-8의 장점과 유사합니다.UTF-EBCDIC에 대한 자세한 내용은 Unicode Technical Report #16에 정의되어 있습니다.

일련의 Unicode 코드 포인트의 UTF-EBCDIC 부호화 버전을 작성하려면 먼저 UTF-8(사양에서는 UTF-8-Mod)에 근거한 부호화가 적용됩니다(사양에서는 I8 시퀀스라고 부릅니다).이 인코딩과 UTF-8의 주요 차이점은 Unicode 코드 포인트 U+0080 ~ U+009F(C1 제어 코드)를 단일 바이트로 나타내, 나중에 대응하는 EBCDIC 제어 코드에 매핑할 수 있다는 것입니다.이를 실현하기 위해 UTF-8-Mod는 멀티바이트시퀀스 내의 바이트 후행 포맷으로 10XXXXXX가 아닌 101XXXXXX를 사용합니다.이것은 6비트가 아닌5비트밖에 유지할 수 없기 때문에 U+03FF 이상의 코드 포인트의 UTF-8-Mod 부호화는 UTF-8 부호화보다 큽니다.

UTF-8-Mod 변환에서는 데이터가 ASCII 기반 포맷(예를 들어 U+0041 "A"는 여전히 01000001로 인코딩됨)으로 남습니다.따라서 각 바이트는 가역적(1 대 1) 룩업테이블을 통해 공급되어 최종 UTF-EBCDIC 인코딩이 생성됩니다.예를 들어 이 표의 01000001은 11000001에 매핑되므로 U+0041(Unicode의 "A")의 UTF-EBCDIC 인코딩은 0xC1(EBCDIC의 "A")입니다.

이 인코딩 형식은 설계 대상인 EBCDIC 기반 메인프레임에서도 거의 사용되지 않습니다.z/OS와 같은 IBM EBCDIC 기반 메인프레임 운영 체제는 완전한 Unicode 지원을 위해 일반적으로 UTF-16을 사용합니다.예를 들어 IBM DB2, COBOL, PL/I, JavaIBM XML 툴킷은 IBM 메인프레임에서 UTF-16을 지원합니다.

코드 페이지 레이아웃

UTF-EBCDIC에서는 싱글바이트 인코딩을 사용하는 문자가 160개 있습니다(UTF-8에서는 128개).보시는 바와 같이 각 괄호의 위치 때문에 싱글바이트 부분은 IBM-37이 아닌 IBM-1047과 유사합니다.CCSID37은 각각 16진수 AD 및 BD가 아닌 16진수 BA 및 BB에 []를 가진다.

UTF-EBCDIC
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x 없음 SOH STX ETX 세인트 HT SSA EPA SS2 VT FF CR 그렇게 SI
1배 DLE DC1 DC2 DC3 OSC LF BS ESA 할 수 있다 전자파 PU2 SS3 FS GS RS 미국
2배 패드 BPH NBH IND NEL ETB ESC HTS HTJ VTS PLD PLU ENQ ACK
3배 DCS PU1 동기 STS CCH MW SPA 전원 SOS SGCI SCI CSI DC4 NAK PM 후보선수
4배 SP . < > ( +
5배 & ! $ * ) ; ^
6배 - / , % _ > ?
7배 2 2 2 2 2 ` : # @ ' = "
8배 2 a b c d e f g h i 2 2 2 2 2 2
9배 2 j k l m n o p q r 2 2 2 2 2 2
도끼 2 ~ s t u v w x y z 2 2 2 [ 2 2
Bx 2 2 2 2 2 2 2 3 3 3 3 3 3 ] 3 3
Cx { A B C D E F G H I 3 3 3 3 3 3
Dx } J K L M N O P Q R 3 3 4 4 4 4
\ 4 S T U V W X Y Z 4 4 4 5 5
Fx 0 1 2 3 4 5 6 7 8 9 APC
이 바이트 수의 시퀀스에 대해 바이트를 시작합니다.툴팁은 해당 시작 바이트를 사용하여 인코딩된 최저 코드 포인트를 보여줍니다.
잘못된 오버롱 형식(툴팁에 첫 번째 유효한 시퀀스의 코드 포인트가 표시됨) 또는 U+10FFF보다 큰 코드 포인트를 인코딩하기 때문에 연속 바이트의 모든 조합이 유효한 것은 아닙니다.
계속 바이트 수툴팁은 5비트의 추가 16진수 값을 보여줍니다.
유효하지 않은 오버롱 형식만 시작할 수 있는 리드 바이트를 포함하여 사용되지 않습니다.예를 들어 0x76 0x73(UTF-8-Mod 시퀀스 0xC2 0xBF에 매핑됨)도 U+005F(UTF-8-Mod 0x5F, UTF-EBC DIC 0x6D6D로 올바르게 인코딩됨)의 과도한 부호화일 뿐입니다.

Oracle UTFE

Oracle UTFE는 Unicode 3.0 UTF-8 Oracle 데이터베이스 바리에이션입니다.UTF-8의 CESU-8 바리안트와 비슷합니다.보충문자는 1개의 4바이트 문자 또는5바이트 문자가 아닌 2개의 4바이트 문자로 인코딩됩니다.EBCDIC [2]플랫폼에서만 사용됩니다.

장점:

  • EBCDIC의 Unicode 문자 세트만.
  • SQL CHAR 유형의 길이는 문자 수로 지정할 수 있습니다.
  • 데이터가 동일한 보조 문자로 구성된 경우 SQL CHAR 열의 이진 순서는 SQL NCHAR 열의 이진 순서와 동일합니다.따라서 이러한 열은 동일한 [2]문자열에 대해 동일하게 정렬됩니다.

단점:

  • 보조 문자는 4바이트가 아닌 6바이트를 차지합니다.따라서 보조 문자를 변환해야 합니다.
  • UTFE는 Unicode 표준 인코딩이 아닙니다.UTF-8 인코딩을 필요로 하는 클라이언트는 취득 및 [2]저장 시 데이터를 변환해야 합니다.

Mksh nega-UTF-8

Mksh는 "utf8-mode"를 가진 POSIX 쉘로 EBCDIC에 대한 포팅을 복잡하게 만듭니다.개발자는 UTF-EBCDIC를 구현하는 대신 일반 UTF-8을 사용하여 EBCD로 변환하는 것이 더 쉽다는 것을 알게 되었습니다.IC는 현재 코드 페이지의 "확장 ASCII" 인코딩인 것처럼 가장합니다.단,[3] ASCII에서 찾을 수 없는EBCDIC 제어문자는 파기됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "UTR #16: UTF-EBCDIC". www.unicode.org. Retrieved 2021-02-23. You need to search at most five bytes (seven bytes, if the full range of 31 bits of ISO/IEC 10646 is considered) backwards
  2. ^ a b c Baird, Cathy; Chiba, Dan; Chu, Winson; Fan, Jessica; Ho, Claire; Law, Simon; Lee, Geoff; Linsley, Peter; Matsuda, Keni; Oscroft, Tamzin; Takeda, Shige; Tanaka, Linus; Tozawa, Makoto; Trute, Barry; Tsujimoto, Mayumi; Wu, Ying; Yau, Michael; Yu, Tim; Wang, Chao; Wong, Simon; Zhang, Weiran; Zheng, Lei; Zhu, Yan; Moore, Valarie (2002) [1996]. "Appendix A: Locale Data". Oracle9i Database Globalization Support Guide (PDF) (Release 2 (9.2) ed.). Oracle Corporation. Oracle A96529-01. Archived (PDF) from the original on 2017-02-14. Retrieved 2017-02-14.
  3. ^ "MirBSD/MKSH". GitHub. 4 November 2021. EBCDIC interacts with utf8-mode in a special way: UTF-EBCDIC is not used by anyone, we cannot use UCS-2/4 in the shell, so “nega-UTF-8”, a scheme in which UTF-8 calculations are done on the octets converted per the current EBCDIC codepage to “extended ASCII”.

외부 링크