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_JISX0213とShift_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
参考
関連項目
- Shift_JIS - 本符号化方式はこれの拡張版
- JIS X 0213 - 元になっている規格
- EUC-JIS-2004 - 本符号化方式と同様のJIS X 0213の符号化方式の一種
- ISO-2022-JP-2004 - 本符号化方式と同様のJIS X 0213の符号化方式の一種
最終更新時間:2023年06月30日 00時51分23秒