トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Shift_JIS-2004

[カテゴリ:仕様]

Shift_JIS-2004は、JIS X 0213の符号化方式のひとつです。JIS X 0213の符号を計算式によって変形したものとJIS X 0201とを同時に用いる方式で、1バイトと2バイトの混在する文字コードです。

JIS X 0213の附属書1で定義されています。JIS X 0208ベースのShift_JISの上位互換となっています。このため、Shift_JIS-2004に対応すればShift_JISにも対応したことになります。

符号の構造

Shift_JISと同じく、JIS X 0201の8ビットコードの隙間にJIS漢字の2バイトコードを変形のうえ詰め込んだものです。

1バイトコードの範囲は、0x00-0x7F (JIS X 0201ラテン文字集合)、0xA0-0xDF (JIS X 0201片仮名集合)です。

2バイトコードの第1バイトとなる範囲は、0x81-0x9F, 0xE0-0xFCです。

第1バイトが0xEFまでの範囲は、漢字集合1面(非漢字ならびに第1〜第3水準漢字)に相当し、従来のShift_JISと同じ計算方法で区点番号から符号化表現(第1・第2バイト)を求めることができます。

第1バイトが0xF0から0xFCまでの範囲は、漢字集合2面(第4水準漢字)に相当します。区点番号から符号化表現を求めるには、異なる計算式を用いる必要があります。計算方法は下記リンク先を参照してください。

名称について

Shift_JIS-2004という名称になったのはJIS X 0213:2004においてです。規格初版のJIS X 0213:2000では、Shift_JISX0213という名称でした。

Shift_JISX0213Shift_JIS-2004とでは、JIS X 0213の2000年版と2004年版の違い、すなわち10文字追加による差異があります。しかし全体に対して見ればごくわずかな違いであるため、両者を区別しないことがしばしばあります。

実装

Mac OS Xや、プログラミング言語のPython, Java, PHP, コード変換プログラムのiconv, nkf, テキストエディタのGNU Emacs等はこの符号化方式に対応しています。

  • iconvでは、"SHIFT_JISX0213" あるいは "SHIFT_JIS-2004" の名前でこの符号化方式に対応しています
  • Mac OS Xに付属のテキストエディットやSafariでは、"Shift JIS X0213" という名称で対応しています
  • Javaでは "x-SJIS_0213" という名前で指定します (Java 7以降で有効。Java 6でも途中のUpdateから対応)

例えば、iconvコマンドでShift_JIS-2004からUTF-8に変換するには下記のようにします。

iconv -f SHIFT_JISX0213 -t UTF-8 < sjis.txt > utf8.txt

シフトJISからUTF-8へコード変換するには常にこの方法で行うのがおすすめです。Windowsのベンダ定義外字丸付き数字ローマ数字も救済でき、かつ、波ダッシュを正しい符号位置(U+301C)に変換します。波ダッシュだけでなく、双柱や負符号なども文字化けせず正しく変換します。

UTF-8からSJISに変換するには、上の -f と -t を入れ替えればOKです。

iconv -f UTF-8 -t SHIFT_JISX0213 < utf8.txt > sjis.txt

参考

関連項目

最終更新時間:2023年06月30日 00時51分23秒