Shift JIS är inom datatekniken en teckenkodning som stödjer de japanska och engelska språken. Tekniken standardiserades i Japan 1997, under namnet JIS X 0208. Det har tidigare varit den vanligaste teckenkodningen för webbsidor på japanska, men Unicode har i huvudsak ersatt Shift JIS även i Japan. År 2011 var de ungefär lika vanliga, men 2021 var Unicode (UTF-8) cirka 10 gånger oftare använt än Shift-JIS i Japan vilket i hög grad beror på att verktyg för webbdesign skapade utanför Japan inte stödjer Shift-JIS.

Algoritm redigera

Tecknen lagras som en eller två bytes. Alla ASCII-tecken lagras som sig själva i en byte (utom bland annat omvänt snedstreck som är bytt mot Yen-tecknet). Dessutom lagras Katakana-tecken i en byte i intervallet 0xA1-0xDF. Övriga japanska tecken lagras i två bytes. Den första blir i dessa fall i intervallet 0x81-0x9F eller 0xE0-0xEF, och den andra i intervallet 0x40-0xFC. Det innebär att engelska bokstäver kan förekomma som andra byte i ett japanskt tecken, och inte bara representerande sig själva. Sökalgoritmer måste vara anpassade till Shift JIS annars kan man få falska träffar (till skillnad från UTF-8 som inte har det problemet).
Betydelse för enskilda bytes:

Intervall Betydelse första eller enda byten Betydelse andra byten
0x00-0x3F Enligt ASCII Ej tillåtet
0x40-0x7F
utom 0x5C,0X7C
Enligt ASCII Del av Kanji-tecken
0x5C,0x7C ¥ resp. ‾ Del av Kanji-tecken
0x81-0x9F Första byte i Kanji-tecken Del av Kanji-tecken
0xA0-0xDF Katakana-tecken Del av Kanji-tecken
0xE0-0xEF Första byte i Kanji-tecken Del av Kanji-tecken
0xF0-0xFF Första byte, dock endast i utökningar av standarden Del av Kanji-tecken

Användning redigera

Shift JIS fungerar i HTML och i programmeringsspråk (japanska stöds bara i textsträngar, inte i taggar, variabelnamn mm), eftersom de tecken som markerar slut på fritext och början på en tag eller liknande, alltså <, >, /, " med flera bara lagras som sig själva, inte som en del av ett japanskt tecken. Det går att skriva char *s = "文字化け"; med en Shift JIS-editor och få en vanlig C-kompilator att acceptera det. Ett problem är att bakåtsnedstreck visas som Yen-tecknet, och att tecknet kan dyka upp som andra byten i ett 2-byte tecken och tolkas som en escapesekvens när det inte ska det.

Varianter, andra japanska kodningar redigera

Det finns flera varianter av Shift JIS. Bland annat används i vissa varianter 2-byte tecken som börjar med bytes i intervallet 0xF3-0xF9, vilket standarden inte stödjer. En del företag har lagt till tecken som inte är standardiserade. Shift JIS är bakåtkompatibel med den ursprungliga japanska 1-bytes teckenkodningen JIS X 0201 från 1969, som bara stödjer ASCII (inte bakåtsnedstreck) och Katakana. Det finns i Japan en annan inkompatibel teckenkodning kallad EUC-JP som datorer kan förväxla med Shift JIS och göra texten oläsbar. Ett slanguttryck för felkodad text är "Mojibake".

Unicode har en helt annan algoritm, men alla tecken som stöds av Shift JIS stöds också av Unicode, och man kan omvandla en Shift JIS kodad text till Unicode och sedan tillbaka till Shift JIS och få tillbaka ursprungstexten.