Schicht jis

Schicht jis
Mime / Iana Revers_jis
Alias ​​(e) Ms_kanji,[1] PCK[2][3]
Sprachen) In erster Linie japanisch, aber auch unterstützend Englisch, Russisch, bulgarisch, griechisch
Standard JIS X 0208: 1997 Anhang 1
Einstufung Erweitert ISO 646,[a] Codierung der variablen Breite, CJK -Codierung
Erweitert Jis x 0201 8-Bit-Format
Transformationen / codiert Jis x 0208
gefolgt von Revers_jis-2004 (Jis)
Windows-31J (Netz)
  1. ^ Nicht im strengsten Sinne des Begriffs, da ASCII -Bytes als Trail -Bytes erscheinen können.

Schicht jis (Japanische Industriestandards verschieben, Auch Sjis, MIME Name Revers_jis, bekannt als PCK in Solaris Kontexte)[2][3] ist ein Zeichenkodierung für die japanische Sprache, ursprünglich von a entwickelt japanisch Firma angerufen ASCII Corporation in Verbindung mit Microsoft und standardisiert als JIS X 0208 ANHANG 1. Bis Februar 20210,1% aller Webseiten verwendeten Shift JIS, ein Rückgang von 1,3% im Juli 2014.[4]

Shift JIS ist die zweithäufigste Charakter-Codierung für japanische Websites, die von 6,1% der Websites in der .jp-Domäne verwendet wird. UTF-8 wird von 93,9% der japanischen Websites verwendet.[5][6]

Beschreibung

Shift JIS basiert auf den innerhalb definierten Zeichensätzen innerhalb Jis Standards Jis x 0201: 1997 (für die Single-Byte-Zeichen) und Jis x 0208: 1997 (für die Doppel-Byte-Zeichen). Die Lead-Bytes für die Doppel-Byte-Charaktere sind um die 64 Halbbreite "verschoben" Katakana Zeichen im Single-Byte-Bereich 0xa1 bis 0xdf. Die Single-Byte-Zeichen 0x00 bis 0x7f übereinstimmen dem ASCII Codierung außer a Yen Zeichen (U+00A5) bei 0x5c und an überaus (U+203E) bei 0x7e anstelle des Backslash bzw. Tilde des ASCII -Zeichensets. Die Single-Byte-Zeichen von 0xa1 bis 0xDF-Karte bis zur Halbbreite Katakana-Zeichen in gefunden Jis x 0201.

HTML in Shift JIS geschrieben kann immer noch in gewissem Maße interpretiert werden, wenn sie falsch als ASCII markiert sind und wenn sich das Charset -Tag oben im Dokument selbst befindet, da der wichtige Start und Ende von HTML -Tags und Feldern, <,>, /,, ", &,; Werden von denselben einzelnen Bytes wie in ASCII codiert, und diese Bytes werden in zwei Byte-Sequenzen nicht erscheinen String -Literale in Programmiersprachen wie z. C, aber ein paar Dinge müssen berücksichtigt werden. Erstens das die Escape-Zeichen 0x5c, normalerweise Backslash, ist der halbe Breite Yen Zeichen (¥) In Shift Jis. Wenn sich der Programmierer dessen bewusst ist, wäre es möglich zu verwenden printf ("ハロー ワールド ¥ n"); (wo ハロー ワールド ist Hallo Welt und ¥ n ist eine Fluchtsequenz) unter der Annahme des E/A -Systems unterstützt Schicht jis Ausgang. Zweitens verursacht das 0x5c-Byte Probleme, wenn es als zweites Byte eines Zwei-Byte-Charakters erscheint, da es als Escape-Sequenz interpretiert wird, was die Interpretation durcheinander bringt, es sei denn, sie gefolgt von einem weiteren 0x5c.

Schicht jis erfordert eine 8-Bit sauber Medium für die Übertragung. Es ist voll rückwärts kompatibel mit dem Erbe Jis x 0201 Single-Byte-Codierung, was bedeutet, dass es unterstützt Halbbreite Katakana und das alle gültigen Jis x 0201 String ist auch eine gültige Schicht -JI -Zeichenfolge. Für Zwei-Byte-Zeichen garantiert sich die Verschiebung jedoch nur, dass das erste Byte ein hohes Bit (0x80–0xff) ist. Der Wert des zweiten Byte kann entweder hoch oder niedrig sein. Aussehen der Byte -Werte 0x40–0x7e als zweite Bytes von Codewörter erschwert eine zuverlässige Verschiebungs -JIS -Erkennung, da die gleichen Codes für ASCII -Zeichen verwendet werden. Da der gleiche Byte -Wert entweder erster oder zweites Byte sein kann, sind String -Suchvorgänge schwierig, da einfache Suchvorgänge mit dem zweiten Byte eines Zeichens und dem ersten Byte des nächsten übereinstimmen können, was kein echter Charakter ist. String-Suchalgorithmen müssen maßgeschneidert sein für Schicht jis.

Andererseits das konkurrierende 8-Bit-Format EUC-JP, was nicht die Single-Byte-Halbwidth-Katakana unterstützt, ermöglicht eine viel sauberere und direkte Konvertierung zu und von JIS X 0208 CodepunkteDa alle hochbitsierten Bytes Teile eines Doppel-Byte-Zeichens sind und alle Codes aus dem ASCII-Bereich Single-Byte-Zeichen darstellen.

Unicode Auch hat nicht einige der Nachteile von Schicht -JIs. Unicode hat keine mehrdeutigen Versionen: Neue Zeichen werden unbenutzten Orten von einer einzelnen Organisation zugewiesen, während private Nutzungsbereiche sind deutlich benannt, werden niemals für Standardfiguren verwendet und sind aufgrund der umfassenden Natur von Unicode selten benötigt. Für Shift JIS arbeiten Unternehmen parallel. UTF-8-Encoded Unicode ist rückwärts kompatibel mit ASCII auch für 0x5c und hat nicht das String -Suchproblem.

Für eine Doppel-Byte-JIS-Sequenz ,[7] die Transformation in die entsprechenden Schicht -JIS -Bytes ist:

Mehrere Versionen

Euler -Diagramm Vergleich von Repertoires von Jis x 0208, Jis x 0212, Jis x 0213, Windows-31Jdas Microsoft Standard Repertoire und Unicode
Beziehung zwischen Shift_JIS -Varianten auf dem PC und verwandten Codierungen, einschließlich Kreuzungen und anderen Teilmengen. Die angegebenen Namen sind beschreibend.

Es gibt viele verschiedene Versionen von Verschiebungsjis. Es gibt zwei Bereiche für die Expansion:

Erstens füllt JIS X 0208 nicht das gesamte 94 × 94 -Raum, das in Schicht -JIs dafür codiert ist. Daher gibt es hier Platz für mehr Charaktere - dies sind wirklich Erweiterungen zu JIS X 0208 und nicht für die Verschiebung von JIs selbst.

Zweitens hat Shift JIs mehr Codierungsraum als benötigt Jis x 0201 und Jis x 0208 (sehen § Verschiebung jis Bytekarte unten), und dieser Raum kann und wird für noch mehr Zeichen verwendet.

Windows-932 / Windows-31J

Die beliebteste Erweiterung ist Windows -Code Seite 932 (a Ccsid auch verwendet für Die Erweiterung von IBM auf die Verschiebung von JIs), was bei der registriert ist Iana als "Windows-31J",[1] getrennt von Schicht jis. Dies wurde von Microsoft populär gemacht, obwohl Microsoft selbst den Windows-31J-Namen nicht erkennt und stattdessen diese Variation "Shift_jis" aufruft.[8][9] Die Code-Seite 943 von IBM enthält dieselben Doppel-Byte-Codes wie Microsoft-Code Seite 932, während der Code von IBM weniger Erweiterungen enthält (mit Ausnahme derjenigen, die Microsoft aus NEC enthält) und die Charakterreihenfolge aus der 1978-Ausgabe von JIS X 0208 beibehalten, vielmehr die Charakterreihenfolge aus der 1978-Ausgabe von JIS X 0208, vor allem aus, vor allem von JIS X 0208, vor allem die Charakterreihenfolge beibehält, vielmehr als implementieren Charaktervariante -Swaps Aus dem Standard von 1983.[10]

Windows-31J weist U+005C Reverse Solidus (die u+005c) zu (die Backslash) und 0x7e zu U+007E TILDE, folgt US-Ascii.[11] Die meisten lokalisierten Schriftarten auf Windows zeigen jedoch U+005c als a Yen Zeichen zum Jis x 0201 Kompatibilität.[12][13] Es enthält verschiedene Erweiterungen, nämlich "NEC -Sonderzeichen (Zeile 13), NEC -Auswahl der IBM -Erweiterungen (Zeilen 89 bis 92) und IBM -Erweiterungen (Zeilen 115 bis 119) ","[1] Zusätzlich zum Abbau eines Codierungsraums für Endbenutzerdefinition.[14]

Windows -Codepage 932 ist die Version in der Verwendung W3c/Waswg Codierungsstandard verwendet von HTML5, einschließlich der "ehemals proprietären Erweiterungen von IBM und NEC" von Windows-31J in seiner Tabelle für JIS X 0208,[15] und behandelt auch das Etikett "Shift_jis" austauschbar mit "Windows-31J" mit der Absicht, "kompatibel mit bereitgestellten Inhalten" zu sein.[16]

Makjapaner

Die Version von Shift-jis stammt aus dem Klassischer Mac OS (bekannt als x-mac-japanisch, Code Seite 10001[8] oder macjapanisch) die zugewiesene Tilde bis 0x7e (folgt US-Ascii, nicht Jis x 0201 das zuweist die überaus hier), aber die Yen Zeichen bis 0x5c (wie in Jis x 0201 und Standard Schicht jis). Es wurde auch erweitert Jis x 0201 durch Zuweisung der Backslash bis 0x80 (entsprechend 0x5c in US-ASCII), die, die Nicht bahnbrechender Raum bis 0xa0, die Urheberrechtszeichen bis 0xfd, die Markensymbol bis 0xfe und die Halbbreite Horizontale Ellipse bis 0xff. Es fügte auch erweiterte Doppel -Byte -Zeichen hinzu; einschließlich 53 vertikale Präsentationsformen in der Revers_jis Bereich 0xEB41–0xed96, bei 84 JIs zählt von ihren kanonischen Formen und 260 Sonderzeichen im Reichweite von Shift_JIS 0x8540–0x886d.[17] Diese Variante wurde in eingeführt Kanjitalk Version 7.[18]

Bestimmte Mac OS -Schriftarten verwendeten jedoch andere Varianten. Sai Mincho und Chu Gothic verwenden a "PostScript"Variante von Macjapanese, die zusätzliche vertikale Präsentationsformulare und einen anderen Satz erweiterter Sonderzeichen basierend auf dem enthielt, basierend auf dem NEC -SonderzeichenEinige davon waren nur in den Druckerversionen der Schriftarten erhältlich.[17] Ältere Versionen von Maru Gothic und Hon Mincho von System 7.1 Codierte vertikale Präsentationsformulare bei 10 (nicht 84) JIS -Zeilen von ihren kanonischen Formen und enthielten nicht die speziellen Charaktererweiterungen, dies wurde anschließend geändert.[17][19] Die typische Variante, die mit Kanjitalk Version 6 verwendet wurde, platzierte die vertikalen Präsentationsformulare 10 Zeilen nach unten und verwendete auch das NEC -Erweiterungslayout für Zeile 13.[20]

Revers_jisx0213 und sway_jis-2004

Revers_jis-2004
Alias ​​(e) Revers_jisx0213
Sprachen) japanisch, Ainu, Englisch, Russisch
Standard Jis x 0213
Erweitert Shift_jis (1997),
Jis x 0201 (8 Bit)
Transformationen / codiert Jis x 0213
Vorausgegangen von Shift_jis (1997)

Desto neuer Jis x 0213 Standard definiert eine erweiterte Variante von Shift_jis als als Revers_jisx0213 (in einer früheren Version des Standards) oder Revers_jis-2004. Es ist ein Supersatz von Standardverschiebungs -JIs.[21]

Um die zugewiesenen Zeilen in beiden Ebenen von JIS X 0213 darzustellen, verwendet Shift_JIS-2004 die folgende Methode zum Zuordnen von CodePoints.[22]

In obigem, ist eine Zwei-Byte-Shift_JIS-2004-Sequenz, ist das Flugzeug (, men, auftauchen) Nummer (1 oder 2), ist die Reihe (, ku, Station) Nummer (1-94) und ist die Zelle (, ten, Punkt) Nummer (1-94). Das Ku und zehn Zahlen entsprechen zu und jeweils wo ist eine Zwei-Byte-JIS-Sequenz, die auf eine bestimmte Ebene verweist.

Der gleiche Satz von Zeichen kann durch dargestellt werden durch EUC-JIS-2004, der EUC-JP-basierte Gegenstück.

Einige der Ergänzungen kollidieren mit beliebten Schicht -JIS -Erweiterungen, einschließlich Windows Codepage 932, der in Webstandards verwendet wird (siehe Oben). Vergleichen Sie beispielsweise die Ebene 1 Zeile 89 in Jis x 0213 (Beginn 硃, 硎, 硏…)[23] bis zur Reihe 89 in der in den Webstandards definierten JIS X 0208 -Variante (Beginn 纊, 褜, 鍈…).[24] Darüber hinaus sind einige der Zeichen auf Unicode -Zeichen jenseits des BMP zugeordnet.

Andere Varianten

Der Raum mit Lead -Bytes 0xf5 bis 0xf9 (jenseits der für JIS x 0208 verwendeten Region) wird von Japanisch verwendet Handy Betreiber für Piktogramme zur Verwendung in Email.[25] KDDI geht weiter und definiert Hunderte mehr im Raum mit Lead -Bytes 0xf3 und 0xf4.[26]

Darüber hinaus wurden zahlreiche geringfügige Variationen zu Schicht -JIs vorgenommen, wobei die einzelnen Charaktere hier und da verändert wurden. Die meisten dieser Erweiterungen und Varianten haben keine Iana Registrierung, daher besteht viel Spielraum für Verwirrung, wenn die Verlängerungen verwendet werden.

Eine Variante ist diejenige, die verwendet werden muss, wenn Sie Shift -JIs im Quellcode codieren möchten Saiten von C und ähnliche Programmiersprachen. Diese Variante verdoppelt das Byte 0x5c, wenn es als zweites Byte eines Zwei-Byte-Zeichens erscheint, aber nicht, wenn es als einzelne "¥" (ASCII: "\") angezeigt wird, weil 0x5c der Beginn eines ist Fluchtabfolge. Der beste Weg, dies zu bearbeiten, ist ein spezieller Redakteur, der codiert Schicht jis Hier entlang.

Verschiebungs -Jis -Byte -Karte

Wie in Jis x 0208: 1997 definiert

Das folgende Diagramm gibt die detaillierte Bedeutung jedes Byte in einem in Standard codierten Stream Schicht jis (entsprechend JIS X 0208: 1997).

Erster Byte
0 1 2 3 4 5 6 7 8 9 EIN B C D E F
0
1
2 ! " # $ % & '' ( )) * + Anwesend - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ EIN B C D E F G H ich J K L M N Ö
5 P Q R S T U V W X Y Z [ ¥ ] ^ _
6 ` a b c d e f g h ich j k l m n Ö
7 p q r s t u v w x y z { | }
8
9
EIN
B ソ
C
D
E
F
Zweites Byte
0 1 2 3 4 5 6 7 8 9 EIN B C D E F
0
1
2
3
4
5
6
7
8
9
EIN
B
C
D
E
F
 
Nicht druckbarer ASCII -Zeichen
Unveränderter ASCII -Charakter
Modifiziertes ASCII -Zeichen
Single-Byte-Halbbreite Katakana
Erster Byte eines Doppel-Byte-Jis x 0208-Charakters
Unbenutzt als erster Byte eines JIS X 0208 -Charakters
Zweiter Byte eines Doppel-Byte-JIS X 0208-Zeichens, dessen erste Hälfte der JIS-Sequenz ungerade war
Zweiter Byte eines Doppel-Byte-JIS X 0208-Charakters, dessen erste Hälfte der JIS-Sequenz gerade war
Unbenutzt als zweiter Byte eines JIS X 0208 -Charakters

Mit Verkäufern oder JIS x 0213 Erweiterungen

Einige der Bytes, die nicht für Single-Byte-Codes oder anfängliche Bytes in verwendet werden JIS X 0208: 1997 werden durch bestimmte Erweiterungen verwendet, was zu dem Layout führt, das in der folgenden Tabelle aufgeführt ist.

Erster Byte
0 1 2 3 4 5 6 7 8 9 EIN B C D E F
0
1
2 ! " # $ % & '' ( )) * + Anwesend - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ EIN B C D E F G H ich J K L M N Ö
5 P Q R S T U V W X Y Z [ ¥ ] ^ _
6 ` a b c d e f g h ich j k l m n Ö
7 p q r s t u v w x y z { | }
8
9
EIN
B ソ
C
D
E
F
Zweites Byte
0 1 2 3 4 5 6 7 8 9 EIN B C D E F
0
1
2
3
4
5
6
7
8
9
EIN
B
C
D
E
F
 
Nicht druckbarer ASCII -Zeichen
Unveränderter ASCII -Charakter
Modifiziertes ASCII -Zeichen
Single-Byte-Halbbreite Katakana
Erster Byte eines Doppel-Byte-Zeichens, der von JIS x 0208 verwendet wird (und durch Erweiterungen wie JIS x 0213 Ebene 1)
Erster Byte eines Doppel-Byte
Erster Byte eines Doppel-Byte
Nicht als erster Byte verwendet, der von einigen einzelnen Byte -Erweiterungen verwendet wird
Zweiter Byte eines Doppel-Byte-Charakters, dessen erste Hälfte der JIS-Sequenz ungerade war
Zweiter Byte eines Doppel-Byte-Charakters, dessen erste Hälfte der JIS-Sequenz gerade war
Ungenutzt als zweiter Byte eines Doppelbyte-Charakters


Siehe auch

Verweise

  1. ^ a b c "Charaktersätze". Iana.
  2. ^ a b "überrevutf8.c". OpenSolaris. Zeile 305. 2008-11-12.
  3. ^ a b "Zusätzliche japanische Iconv -Module". Was ist neu in der Betriebsumgebung von Solaris 9 9/04. Oracle Corporation.
  4. ^ "Historische Trends bei der Verwendung von Charaktercodierungen für Websites, Februar 2021". w3techs.com. Abgerufen 2021-02-11.
  5. ^ "Verteilung von Charaktercodierungen auf Websites, die .JP verwenden". w3techs.com. Abgerufen 2022-07-17.
  6. ^ "Verteilung von Charaktercodierungen auf Websites, die Japanisch verwenden". w3techs.com. Abgerufen 2022-07-17.
  7. ^ j1 und j2 sind jeweils im Bereich 33 (0x21) bis 126 (0x7e) inklusive (d. H. 7-Bit-Zeichenwerte ohne Steuerzeichen (0–31 (0x1f) und 127 (0x7f)) und Raum) und Raum) und Raum)
  8. ^ a b "Coding.WindowsCodePage -Eigenschaft - .NET Framework (aktuelle Version)". Msdn. Microsoft.
  9. ^ "Code -Seiten -Identifikatoren". Windows Dev Center. Microsoft.
  10. ^ "IBM-943 und IBM-932". IBM Knowledge Center. IBM.
  11. ^ "CP932.txt". Unicode -Konsortium.
  12. ^ "3.1.1 Details zu Problemen". Probleme und Lösungen für Unicode- und Benutzer-/Anbieter definierte Zeichen. Die offene Gruppe Japan. Archiviert von das Original Am 1999-02-03.
  13. ^ Kaplan, Michael S. (2005-09-17). "Wann ist ein Backslash kein Backslash?".
  14. ^ Kaplan, Michael S. (2007-05-26). "Die PUA außerhalb von Unicode". Alles aussortieren.
  15. ^ "5. Indizes (§ Index JIS0208)". Codierungsstandard. Waswg.
  16. ^ "4.2. Namen und Etiketten". Codierungsstandard. Waswg.
  17. ^ a b c "Japanisch.txt: map (externe Version) von Mac OS Japanische Codierung zu Unicode 2.1 und später". Apple Computer, Inc.; Unicode -Konsortium.
  18. ^ Lunde, Ken (2019-03-21). "Eine kurze Geschichte des Japans -Ära -Namens Ligaturen". CJK -Blog. Adobe Inc.
  19. ^ "Codierungsvarianten für Macjapanese". Apple Developer -Dokumentation. Apfel.
  20. ^ Lunde, Ken (2008). "Anhang E: Anbieter -Charakter -Set -Standards" (PDF). CJKV -Informationsverarbeitung. O'Reilly Media. ISBN 9780596514471.
  21. ^ "JIS X 0213 Code -Mapping -Tabellen". x0213.org.
  22. ^ "Jis x 0213 の 代表 的 な 符号 方式 § § SHIFT_JIS-2004" (auf Japanisch). Hexadezimalzahlen in der Quelle wurden zur Anzeige in Dezimalalbewegung konvertiert.
  23. ^ Japanische Industriestandardskomitee (2004-04-13). Japanischer Grafikzeichen für Informationsaustausch, Ebene 1 (PDF). Itcj/Ipsj. ISO-IR-233.
  24. ^ "Index JIS0208 Visualisierung". Codierungsstandard. Waswg.
  25. ^ "Originalemoji aus Docomo". Dateiformat.info.
  26. ^ "Original Emoji von KDDI". Dateiformat.info.

Externe Links