Shift JIS

Shift Jis
Mime / Iana shift_jis
別名 MS_KANJI,PCK
語言 主要是日語,但也支持英語俄羅斯保加利亞語希臘語
標準 JIS X 0208:1997附錄1
分類 擴展的ISO 646可變寬度編碼CJK編碼
擴展 JIS X 0201 8位格式
轉換 /編碼 JIS X 0208
繼之後 Shift_JIS-2004 (JIS)
Windows-31J (Web)

Shift Jis (Shift Jis( Shift Japany Industrial Standards ,也是SJISMime Name Shift_jis ,在Solaris Contexts中被稱為PCK )是一個針對日語編碼的角色,最初是由一家名為ASCII CorporationMicrosoft結合的日本公司開發的,並標準化為JIS X 0208附錄1

Shift JIS基於JIS標準中定義的字符集JIS X 0201 :1997 (對於單字節字符)和JIS X 0208 :1997 (對於雙字節字符)。

截至2024年1月,被調查的網頁中有0.3%使用了Shift JIS(實際上被解碼為其超級Windows-31J編碼),從2014年7月的1.3%下降了。ShiftJis是第二個宣布的日本網站的宣布的角色,使用.jp域中的站點中有5.3%。 94.7%的日本網站使用UTF-8

結構

Shift JIS是編碼JIS X 0201 :1997的單字節的擴展名,它使用JIS X 0201中未分配的代碼點來編碼雙字節JIS X 0208 :1997字符集。雙字節字符的引線字節在單字節範圍0xA1至0xDF的64個半寬Katakana字符上“移動”。

單字節字符0x 00至0x7f匹配ASCII編碼,除了在0x5C處的日元符號(u+00a5)和0x7e的上調(u+203e),分別代替ASCII角色集的後背和Tilde(這些偏離)從ASCII與JIS X 0201保持一致。從0xa1到0xDF映射到JIS X 0201中發現的半寬的Katakana字符的單字節字符。

對於雙字節字符,第一個字節始終在0x81至0x9f範圍內或範圍0xE0至0xEF(這些範圍在JIS X 0201中未分配)。如果第一個字節是奇數,則第二個字節必須在0x40至0x9e範圍內(但不能為0x7f);如果第一個字節是均勻的,則第二個字節必須在0x9f到0xFC範圍內。

Shift JIS僅保證兩個字節字符的第一個字節將是高位設置(0x80–0xff);第二個字節的值可以高或低。字節值的外觀0x40-0x7e作為代碼單詞的第二個字節的外觀使可靠的Shift jis檢測變得困難,因為ASCII字符使用相同的代碼。由於相同的字節值可以是第一個字節或第二個字節,因此字符串搜索很困難,因為簡單搜索可以匹配字符的第二個字節和下一個字節的第一個字節,這不是有效的Shift JIS JIS字符。弦搜索算法必須針對Shift JIS量身定制。

相容性

Shift JIS與JIS X 0201單字節編碼完全向後兼容,這意味著任何有效的JIS X 0201字符串也是有效的Shift JIS字符串。

JIS X 0208中的雙字節字符需要進行轉換才能在Shift JIS中編碼。對於雙字節JIS X 0208序列 ,轉換對相應的偏移JIS字節是:

競爭的8位格式EUC-JP不支持單字節半寬katakana,允許往返JIS X 0208代碼點進行更清潔,更直接的轉換,因為所有高位字節都是雙重的一部分- 字節字符和ASCII範圍的所有代碼代表單字節字符。

用法

當錯誤標記為ASCII時,以及Charset標記在文檔本身的頂部時,用Shift JIS編寫的HTML仍然可以在某種程度上被解釋,因為HTML標籤的重要起點和結尾(<, >, /, ", &, ;)編碼為與ASCII中的字節相同,並且這些字節不會以兩個字節序列出現。

Shift JIS可以在諸如C之類的編程語言的字符串文字中使用,但是必須考慮一些事情。首先,逃生字符0x5c(通常是後斜線)是Shift Jis中的半寬的日元標誌(¥)。如果程序員意識到這一點,則可以使用 printf("ハローワールド¥n"); (其中ハローワールド是Hello,World和¥n是逃生序列),假設I/O系統支持Shift JIS輸出。其次,當0x5c字節顯示為兩個字節字符的第二個字節時,它將引起問題,因為它將被解釋為逃生序列,這會弄亂解釋,除非後面是另一個0x5c。

多個版本

Euler圖比較了JIS X 0208JIS X 0212JIS X 0213Windows-31J ,Microsoft標準曲目和Unicode的歐拉圖。
PC上的Shift_JIS變體與相關編碼(包括交叉點和其他子集)之間的關係。給出的名稱是描述性的。

存在許多不同版本的Shift JIS。有兩個擴展領域:

首先,JIS X 0208並未填充整個在Shift JIS中為其編碼的94×94空間,因此這裡還有更多字符的空間 - 這些實際上是JIS X 0208的擴展,而不是移動JIS本身。

其次,Shift JIS具有比JIS X 0201JIS X 0208所需的編碼空間(請參見下面的Shift jis byte映射),並且此空間可以並且用於更多字符(作為單字節或雙字節)人物)。

Windows-932 / Windows-31J

最受歡迎的擴展程序是Windows Code Page 932CCSID也用於IBM的擴展名shift jis ),該擴展名與IANA註冊為“ Windows-31J”,與Shift JIS分開。這是由Microsoft普及的,儘管Microsoft本身未識別Windows-31J名稱,而是稱這種變體為“ shift_jis”。 IBM的代碼第943頁包含與Microsoft代碼第932頁相同的雙字節代碼,而IBM的代碼第932頁932包含更少的擴展名(不包括Microsoft從NEC中合併的擴展),並保留了1978年JIS X 0208的角色順序,相反而不是實施1983年標準的角色變體掉期

Windows-31J將0x5C分配給U+005C反向固體(後斜線),並在US-ASCII之後,將0x7E和0x7E分配給U+007E Tilde 。但是,Windows上的大多數本地化字體顯示U+005C作為JIS X 0201兼容性的日元標誌。它包括幾個擴展名,即“ NEC特殊字符(第13行),IBM擴展的NEC選擇(行89至92)和IBM擴展名(第115至119)” 。

Windows CodePage 932是HTML5使用的WW3C / WHATWG編碼標準中使用的版本,其中包括Windows-31J的“ IBM和NEC的“以前專有擴展”,其JIS X 0208的表格,也可以處理標籤“ Shift_jis” Label “ Shift_jis”與“ Windows-31J”互換,目的是“與已部署的內容兼容”。

MacJapanese

Shift-Jis的版本源自經典Mac OS (稱為 x-mac-japanese,代碼第10001頁或Macjapanese)將Tilde分配給0x7E(遵循US-ASCII ,而不是JIS X 0201 ,它在此處分配了上線),而是日元符號為0x5C(如JIS X 0201和標準Shift Shift JIS所示)。它還通過將backslash分配給0x80 (對應於US-ASCII中的0x5c),將backslash分配到0xA0,將版權符號(將版權符號)分配給0xFD,將backslash分配給0x80(對應於0x5c),將其分配給0x80 (對應於0x5c),將其分配給0xFD,則擴展了JIS X 0201 。它還添加了擴展的雙字節字符;在shift_jis範圍0xeb41–0xed96中包括53個垂直演示形式,距其規範形式為84個JIS行,而Shift_JIS範圍0x8540-0x886d中的260個特殊字符。該變體是在Kanjitalk版本7中引入的。

但是,某些MAC OS字體使用了其他變體。 Sai Mincho和Chu Gothic使用MacJapanese的“後記”變體,其中包括其他垂直演示形式和基於NEC特殊字符的其他擴展特殊字符,其中一些僅在字體的打印機版本中可用。從系統7.1編碼的垂直演示形式(而不是84)JIS行的較舊版本的Maru Gothic和Hon Mincho從其規範形式下降,並且不包括特殊字符擴展,隨後發生了更改。 kanjitalk版本6使用的典型變體將垂直演示文稿放在10行,並為第13行使用NEC擴展佈局。

Shift_JISX0213和Shift_JIS-2004

Shift_JIS-2004
別名 shift_jisx0213
語言 日語ainu英語俄語
標準 JIS X 0213
擴展 Shift_Jis(1997),
JIS X 0201 (8位)
轉換 /編碼 JIS X 0213
先於 Shift_Jis(1997)

較新的JIS X 0213標准定義了shift_jis的擴展變體,稱為shift_jisx0213 (在標準的先前版本中)或shift_jis-2004 。它是標準換檔JIS的超集。

為了表示JIS X 0213平面上的分配行,Shift_JIS-2004使用以下方法映射CodePoints。

在以上, 是兩個字節shift_jis-2004序列, 是平面男人,表面)數(1或2), 是行,病房)編號(1-94)和是單元格,點)編號(1-94)。 KU十個數字等同於分別在哪裡是引用給定平面的兩字節JIS序列。

基於EUC-JP的對應物EUC-JIS-2004可以表示相同的字符。

一些添加劑與流行的Shift JIS擴展相撞,包括用於Web標準中的Windows CodePage 932(請參見上文)。例如,比較JIS X 0213中的平面1行89(bubliste朱,硎,硏...)與Web標準中定義的JIS X 0208變體中的第89行(開始纊,褜,鍈...) 。此外,某些字符映射到BMP之外的Unicode字符。

其他變體

日本手機操作員使用鉛字節0xF5至0xF9(超越JIS X 0208的區域)的空間用於電子郵件 KDDI使用LEAD BYTES 0XF3和0XF4在空間中進行了更遠的定義。

除此之外,Shift JIS有許多較小的變化,這里和那裡都有各個角色發生了變化。這些擴展名和變體中的大多數都沒有IANA註冊,因此,如果使用擴展,則存在很大的混亂範圍。

一個變體是必須在C和類似編程語言的源代碼字符串中編碼Shift JIS必須使用的變體。如果字節0x5c作為兩個字節字符的第二個字節,則該變體會加倍,但如果它顯示為單個“¥”(ascii:“ \”)字符,因為0x5c是逃生序列的開始。處理此操作的最佳方法是以這種方式編碼Shift Jis的特殊編輯。

移動JIS字節圖

如JIS X 0208:1997所定義

下圖給出了在標準移位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字符
單字節半寬的katakana
雙字節JIS X 0208字符的第一個字節
未使用為JIS X 0208字符的第一個字節
雙字節JIS X 0208字符的第二個字節,其JIS序列的前半部分是奇數
雙字節JIS X 0208字符的第二個字節,其JIS序列的前半部分甚至是
未用作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字符
單字節半寬的katakana
JIS X 0208使用的雙字節字符的第一個字節(以及諸如JIS X 0213平面1的擴展)
雙字節字符的第一個字節,在JIS X 0208中未分配,但由JIS X 0213平面1或供應商擴展
JIS X 0208以外的雙字節字符的第一字節,用於JIS X 0213平面2或無關擴展
不用用作第一個字節,由某些單個字節擴展使用
雙字節字符的第二個字節,其JIS序列的前半字節很奇怪
雙字節字符的第二個字節,其JIS序列的前半字節甚至是
未使用為雙字節字符的第二個字節


也可以看看