시프트 JIS

Shift JIS
시프트 JIS
MIME / IANAShift_JIS
에일리어스MS_Kanji,[1] PCK[2][3]
언어주로 일본어이지만 영어, 러시아어, 불가리아어, 그리스어도 지원
표준.JIS X 0208: 1997 부록 1
분류확장 ISO 646,[a] 가변 폭 부호화, CJK 부호화
확장JIS X 0201 8비트 포맷
변환/인코딩JIS X 0208
에 의해 성공자Shift_JIS-2004(JIS)
Windows-31J(Web)
  1. ^ ASCII 바이트는 트레일 바이트로 표시될 수 있기 때문에 이 용어의 가장 엄밀한 의미는 아닙니다.

Shift JIS(Shift 일본 산업 규격, SJIS, MIME 이름 Shift_J)IS(Solaris [2][3]컨텍스트에서는 PCK로 알려져 있음)는 일본어의 문자 부호화입니다.원래는 ASCII Corporation이라고 불리는 일본 기업이 Microsoft와 협력하여 개발하여 JIS X 0208 부록 1로 표준화되었습니다.2021년 2월까지 전체 웹페이지 중 Shift JIS를 사용하는 비율은 0.1%로 2014년 [4]7월의 1.3%에서 감소했습니다.

Shift JIS는 일본 웹사이트에서 두 번째로 인기 있는 문자 인코딩으로 .jp 도메인 사이트의 6.1%에서 사용되고 있습니다.UTF-8은 일본 [5][6]웹사이트의 93.9%에서 사용되고 있다.

묘사

Shift JIS는 JIS 표준 JIS X 0201:1997(싱글바이트 문자의 경우) 및 JIS X 0208:1997(더블바이트 문자의 경우)에 정의된 문자 세트를 기반으로 합니다.더블바이트 문자의 리드바이트는 싱글바이트 범위 0xA1 ~0xDF 의 64 반각 가타카나 문자 주위에 「시프트」됩니다.단일 바이트 문자 0x00 ~0x7F는 ASCII 문자 세트의 백슬래시와 칠드 대신 0x5C에서 기호(U+00A5)와 0x7E에서 오버라인(U+203E)을 제외하고 ASCII 인코딩과 일치합니다.0xA1 ~0xDF 의 싱글 바이트 문자는, JIS X 0201 의 반각 가타카나 문자에 매핑 됩니다.

Shift JIS로 기술된HTML은 ASCII로 잘못 태그되어도 어느 정도 해석될 수 있습니다.또한 HTML 태그와 필드의 중요한 시작과 끝은 ASCII와 같은 단일 바이트로 코드화되어 있기 때문에 이러한 바이트는 2바이트 시퀀스로 표시되지 않습니다.Shift JIS는 C와 같은 프로그래밍 언어의 문자열 리터럴에서 사용할 수 있지만 몇 가지 사항을 고려해야 합니다.우선, 이스케이프 문자 0x5C(통상은 백슬래시)는 Shift JIS의 반각부호())입니다.프로그래머가 이것을 알고 있다면, 다음을 사용할 수 있을 것이다.printf("ハローワールド¥n");I/O시스템이 Shift JIS 출력을 지원하는 것을 전제로 한 ( 「 「 「 「 「 「 」는 Hello, world, 「n」은 이스케이프 시퀀스입니다).둘째, 0x5C 바이트는 2바이트 문자의 두 번째 바이트로 표시될 때 문제가 발생합니다.이는 이스케이프 시퀀스로 해석되기 때문에 다른 0x5C가 이어지지 않는 한 해석을 혼란스럽게 하기 때문입니다.

Shift JIS에는 전송을 위한 8비트 클린 미디어가 필요합니다.이는 레거시 JIS X 0201 싱글바이트 인코딩과 완전히 하위 호환됩니다.즉, 반각 가타카나를 지원하며 유효한 JIS X 0201 문자열도 유효한 Shift JIS 문자열입니다.단, 2바이트 문자의 경우 Shift JIS는 첫 번째 바이트가 하이비트 설정(0x80–0x)임을 보증합니다.FF). 두 번째 바이트 값은 높거나 낮습니다.바이트 값 0x40~0x7E가 코드 워드의 두 번째 바이트로 표시되면 ASCII 문자에 동일한 코드가 사용되므로 신뢰할 수 있는 Shift JIS 검출이 어려워집니다.같은 바이트 값이 첫 번째 바이트 또는 두 번째 바이트일 수 있으므로 문자열 검색은 어렵습니다. 단순한 검색은 실제 문자가 아닌 문자의 두 번째 바이트와 다음 바이트의 첫 번째 바이트를 일치시킬 수 있기 때문입니다.문자열 검색 알고리즘은 Shift JIS용으로 커스터마이즈해야 합니다.

한편, 싱글 바이트의 반각 가타카나를 지원하지 않는 경쟁8비트 포맷 EUC-JP에서는, JIS X 0208 코드 포인트로의 직접 변환이 가능하게 됩니다.이것은, 모든 고비트 세트 바이트가 더블 바이트 문자의 일부이며, ASCII 범위의 모든 코드가 싱글 바이트 문자를 나타내기 때문입니다.

Unicode에는 Shift JIS의 단점도 없습니다.유니코드에는 애매한 버전이 없습니다.개인 사용 영역이 명확하게 지정되어 있어 사용되지 않는 장소에 새로운 문자가 할당되어 있어 표준 문자는 사용되지 않으며 유니코드의 포괄적인 특성으로 인해 거의 필요하지 않습니다.Shift JIS의 경우 기업은 병행하여 작업합니다.UTF-8 인코딩된 Unicode는 0x5C에서도 ASCII와 하위 호환되며 문자열 검색 문제가 없습니다.

더블바이트 JIS 1 2[7]의 경우 대응하는 Shift JIS 1 2})로의 변환은 다음과 같습니다.

복수 버전

JIS X 0208, JIS X 0212, JIS X 0213, Windows-31J, 마이크로소프트 표준 레퍼토리 및 유니코드 레퍼토리를 비교하는 오일러 다이어그램
Shift_J의 관계PC상의 IS 바리안트 및 관련 부호화(교차 및 기타 서브셋 포함)지정된 이름은 설명이 됩니다.

Shift JIS에는 다양한 버전이 있습니다.확장에는 다음 두 가지 영역이 있습니다.

첫째, JIS X 0208은 Shift JIS에서 인코딩된 94×94 공간을 모두 채우지 않기 때문에 여기에 더 많은 문자를 넣을 수 있습니다.이것들은 실제로는 Shift JIS 자체라기보다는 JIS X 0208의 확장자입니다.

둘째, Shift JIS는 JIS X 0201JIS X 0208필요한 부호화 공간보다 더 많은 부호화 공간(아래의 § Shift JIS 바이트 맵 참조)을 가지고 있으며, 이 공간은 더 많은 문자에 사용할 수 있습니다.

Windows-932 / Windows-31j

가장 일반적인 확장자는 Windows 코드 페이지 932(IBM의 [1]Shift JIS 확장에도 사용되는 CCSID)로 IANA에 "Windows-31J"로 등록되어 있으며 Shift JIS와는 별개입니다.이것은 마이크로소프트에 의해 대중화되었지만, 마이크로소프트 자체는 Windows-31J 이름을 인식하지 못하고 대신 "shift_jis"[8][9]를 호출합니다.IBM의 코드 페이지 943은 마이크로소프트의 코드 페이지 932와 동일한 더블바이트 코드를 포함하며, IBM의 코드 페이지 932는 마이크로소프트가 NEC에서 통합한 확장자를 제외하고 1983년 표준의 [10]문자 변형 스왑을 구현하는 대신 JIS X 0208의 1978년 판의 문자 순서를 유지합니다.

Windows-31J 에서는 US-ASCII [11]이어, 0x5C 를 U+005C REVERSE SOLIDUS(백슬래시) 에 할당해, 0x7E 를 U+007E TILDE 에 할당합니다.다만, Windows 의 대부분의 현지화 폰트에서는, JIS X 0201 [12][13]의 호환성을 나타내는 Yen 기호로서 U+005C 가 표시됩니다.여기에는 "NEC 특수 문자(13행), NEC에서 선택한 IBM 확장자(89~9행), IBM 확장자(1115~[1]119행)"와 같은 여러 확장자가 포함되며, [14]최종 사용자 정의를 위해 인코딩 공간을 확보합니다.

Windows 코드 페이지 932는 HTML5에 의해 사용되는 W3C/WHATWG 인코딩 규격에 사용되는 버전입니다.이 규격은 JIS X 0208의 [15]테이블에 Windows-31J의 "이전 독점 확장자"를 포함하며, "shift_jis"라는 라벨은 "Windows-31j"와 호환성이 있는 콘텐츠로 상호 작용합니다.

맥일본어

Shift-J 버전기존의 Mac OS에서 발신된 IS(이른바:x-mac-japanese, Code[8] page 10001 또는 MacJapanese)에서는, 칠데를 0x7E(US-ASCII에 준거해, 여기서 오버라인을 할당하는 JIS X 0201이 아니고, 0x5C(JIS X 0201 및 표준 Shift JIS에 준거)에 할당하고 있습니다.또한 백슬래시를 0x80(US-ASCII에서는 0x5C에 해당), 중단 없는 공간을 0xA0, 저작권 기호를 0xFD, 상표 기호를 0xFE, 반폭 수평 줄임표를 0xFF에 할당하여 JIS X 0201을 확장하였습니다.또한 Shift_J에 53개의 수직 프레젠테이션 폼을 포함하여 확장된 더블 바이트 문자를 추가했습니다.IS 범위 0xEB41 ~0xED96 (표준 형식에서 84 줄의 JIS 행과 Shift_J의 260 특수 문자)IS 범위 0x8540 ~[17]0x886D이 변형은 KanjiTalk 버전7에서 [18]도입되었습니다.

다만, 특정의 Mac OS 서체에서는, 다른 배리언트를 사용하고 있었습니다.Sai Mincho와 Chu Gothic은 MacJapanese의 "PostScript" 변형을 사용하고 있습니다.이것은, NEC의 특수 문자에 근거해, 한층 더 세로 방향의 프레젠테이션 형식과 다른 확장 특수 문자 세트를 포함하고 있습니다.이것들 중 일부는, 프린터 버전의 [17]폰트에서만 사용할 수 있었습니다.System 7.1의 마루 고딕과 혼민초의 이전 버전은 표준 형식에서 10줄(84줄 아님) JIS 행으로 수직 프레젠테이션 형식을 인코딩하고 특수 문자 확장자를 포함하지 않았습니다.이 후에 변경되었습니다.[17][19]KanjiTalk 버전6에서 사용되는 일반적인 변형은 세로 프레젠테이션 폼을 10줄 아래쪽에 배치하고 [20]13줄에 NEC 확장 레이아웃을 사용했습니다.

Shift_JISX0213 및 Shift_JIS-2004

Shift_JIS-2004
에일리어스Shift_JISX0213
언어일본어, 아이누어, 영어, 러시아어
표준.JIS X 0213
확장Shift_JIS(1997),
JIS X 0201 (8비트)
변환/인코딩JIS X 0213
선행Shift_JIS(1997)

새로운 JIS X 0213 표준은 Shift_J의 확장 버전을 정의합니다.IS는 Shift_J라고 불립니다.ISX0213(표준의 이전 버전) 또는 Shift_JIS-2004표준 Shift [21]JIS의 슈퍼셋입니다.

JIS X 0213의 양쪽 평면에 할당된 행을 나타내기 위해 Shift_JIS-2004 에서는,[22] 코드 포인트 매핑에 다음의 방법이 사용됩니다.

2바이트의 Shift_J입니다.IS-2004 시퀀스m { m 평면(,, men, surface) 번호(1 또는 2), { k 행(,, ku, ward) (1-94),t { t 셀(,, 10, 포인트) 번호(1-94)입니다.ku 10개의 숫자는 j 1- }- 2 - 합니다. 1 ({}})는 주어진 평면을 참조하는 2바이트 JIS 시퀀스입니다.

EUC-JP 기반의 대응책인 EUC-JIS-2004에서도 같은 문자 세트를 나타낼 수 있습니다.

Web 표준으로 사용되는 Windows 코드 페이지932 등, 일반적인 Shift JIS 확장과 충돌하는 것도 있습니다(상기 참조).예를 들어 JIS X 0213(시작 89, ,,[23] …)의 1행 89를 웹 표준으로 정의된 JIS X 0208 배리언트(시작 ,, …, …)[24]의 89행과 비교합니다.또한 일부 문자는 BMP 이외의 Unicode 문자에 매핑됩니다.

기타 변종

리드 바이트가 0xF5 ~0xF9 의 공간(JIS X 0208 에 사용되는 지역외)은,[25] 일본의 휴대 전화 사업자가 E-메일로 사용하는 픽토그래프에 사용합니다.KDDI는 더 나아가 리드 바이트 0xF3 및 0xF4로 [26]공간에 수백 개를 더 정의합니다.

게다가 Shift JIS에서는, 개개의 캐릭터가 변경되는 등, 수많은 사소한 변형이 행해지고 있습니다.이러한 확장자 및 배리언트의 대부분은 IANA 등록이 되어 있지 않기 때문에, 확장자를 사용하는 경우, 혼란을 일으킬 가능성이 있습니다.

변종은 C 및 유사한 프로그래밍 언어의 소스 코드 문자열로 Shift JIS를 인코딩할 때 사용해야 하는 변종입니다.이 변형은 2바이트 문자의 두 번째 바이트로 표시되는 경우 0x5C를 2배로 늘립니다.단일 "ascii"(ASCII: "\") 문자로 표시되는 경우 0x5C는 이스케이프 시퀀스의 시작이기 때문입니다.이를 처리하는 가장 좋은 방법은 Shift JIS를 이렇게 인코딩하는 특수 편집기입니다.

Shift JIS 바이트 맵

JIS X 0208:1997에 정의된 대로

아래 표는 표준 Shift JIS(JIS X 0208:1997에 준거)로 인코딩된 스트림의 각 바이트에 대한 자세한 의미를 보여줍니다.

첫 번째 바이트
0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
2 ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < > = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ ¥ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { }
8
9
A
B ソ
C
D
E
F
두 번째 바이트
0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
인쇄할 수 없는 ASCII 문자
변경되지 않은 ASCII 문자
ASCII 문자 수정
싱글바이트 반각 가타카나
더블바이트 JIS X 0208 문자의 첫 번째 바이트
JIS X 0208 문자의 첫 번째 바이트로 사용되지 않음
JIS 시퀀스의 전반이 홀수인 더블바이트 JIS X 0208 문자의 두 번째 바이트
JIS 시퀀스의 전반부가 짝수인 더블바이트 JIS X 0208 문자의 두 번째 바이트
JIS X 0208 문자의 두 번째 바이트로 사용되지 않음

벤더 또는 JIS X 0213 확장 기능 포함

JIS X 0208:1997의 싱글바이트 코드 또는 초기바이트에 사용되지 않는 바이트 중 일부는 특정 확장에 의해 사용되므로 아래 표에 자세히 나와 있는 레이아웃이 됩니다.

첫 번째 바이트
0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
2 ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < > = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ ¥ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { }
8
9
A
B ソ
C
D
E
F
두 번째 바이트
0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
인쇄할 수 없는 ASCII 문자
변경되지 않은 ASCII 문자
ASCII 문자 수정
싱글바이트 반각 가타카나
JIS X 0208(및 JIS X 0213 플레인 1)에서 사용되는 더블바이트 문자의 첫 번째 바이트
더블바이트 문자의 첫 번째 바이트.JIS X 0208에서는 할당되지 않았지만 JIS X 0213 플레인1 또는 벤더 확장자에 의해 사용됩니다.
JIS X 0208을 초과하는 더블바이트 문자의 첫 번째 바이트. JIS X 0213 플레인 2 또는 관련 없는 확장자에 사용됩니다.
첫 번째 바이트로 사용되지 않고 일부 단일 바이트 확장자에 의해 사용됩니다.
JIS 시퀀스의 전반부가 홀수인 더블바이트 문자의 두 번째 바이트
JIS 시퀀스의 전반부가 짝수인 더블바이트 문자의 두 번째 바이트
더블바이트 문자의 두 번째 바이트로 사용되지 않음


「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c "Character Sets". IANA.
  2. ^ a b "convutf8.c". OpenSolaris. Line 305. 2008-11-12.
  3. ^ a b "Additional Japanese iconv Modules". What's New in the Solaris 9 9/04 Operating Environment. Oracle Corporation.
  4. ^ "Historical trends in the usage of character encodings for websites, February 2021". w3techs.com. Retrieved 2021-02-11.
  5. ^ "Distribution of Character Encodings among websites that use .jp". w3techs.com. Retrieved 2022-07-17.
  6. ^ "Distribution of Character Encodings among websites that use Japanese". w3techs.com. Retrieved 2022-07-17.
  7. ^ j2 j는 각각 33(0x21)~126(0x7e)의 범위(즉, 제어 문자(0~31(0x1f)와 127(0x7f) 및 공간을 제외한 7비트 문자 값)입니다1.
  8. ^ a b "Encoding.WindowsCodePage Property – .NET Framework (current version)". MSDN. Microsoft.
  9. ^ "Code Page Identifiers". Windows Dev Center. Microsoft.
  10. ^ "IBM-943 and IBM-932". IBM Knowledge Center. IBM.
  11. ^ "CP932.TXT". Unicode Consortium.
  12. ^ "3.1.1 Details of Problems". Problems and Solutions for Unicode and User/Vendor Defined Characters. The Open Group Japan. Archived from the original on 1999-02-03.
  13. ^ Kaplan, Michael S. (2005-09-17). "When is a backslash not a backslash?".
  14. ^ Kaplan, Michael S (2007-05-26). "The PUA outside of Unicode". Sorting it all out.
  15. ^ "5. Indexes (§ Index jis0208)". Encoding Standard. WHATWG.
  16. ^ "4.2. Names and labels". Encoding Standard. WHATWG.
  17. ^ a b c "JAPANESE.TXT: Map (external version) from Mac OS Japanese encoding to Unicode 2.1 and later". Apple Computer, Inc.; Unicode Consortium.
  18. ^ Lunde, Ken (2019-03-21). "A Brief History of Japan's Era Name Ligatures". CJK Type Blog. Adobe Inc.
  19. ^ "Encoding Variants for MacJapanese". Apple Developer Documentation. Apple.
  20. ^ Lunde, Ken (2008). "Appendix E: Vendor Character Set Standards" (PDF). CJKV Information Processing. O'Reilly Media. ISBN 9780596514471.
  21. ^ "JIS X 0213 Code Mapping Tables". x0213.org.
  22. ^ "JIS X 0213の代表的な符号化方式 § Shift_JIS-2004" (in Japanese). 소스의 16진수가 표시용으로 10진수로 변환되었습니다.
  23. ^ Japanese Industrial Standards Committee (2004-04-13). Japanese Graphic Character Set for Information Interchange, Plane 1 (PDF). ITSCJ/IPSJ. ISO-IR-233.
  24. ^ "Index jis0208 visualization". Encoding Standard. WHATWG.
  25. ^ "Original Emoji from DoCoMo". FileFormat.info.
  26. ^ "Original Emoji from KDDI". FileFormat.info.

외부 링크