{{category 仕様}} 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水準漢字)に相当します。区点番号から符号化表現を求めるには、異なる計算式を用いる必要があります。計算方法は下記リンク先を参照してください。 *[JIS X 0213の代表的な符号化方式#Shift_JIS-2004|http://www.asahi-net.or.jp/~wq6k-yn/code/enc-x0213.html#sjis-2004] !!名称について 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 !!参考 *[JIS X 0213の代表的な符号化方式|http://www.asahi-net.or.jp/~wq6k-yn/code/enc-x0213.html] *[JIS X 0213のコード対応表|http://x0213.org/codetable/] !!関連項目 *Shift_JIS - 本符号化方式はこれの拡張版 *JIS X 0213 - 元になっている規格 *EUC-JIS-2004 - 本符号化方式と同様のJIS X 0213の符号化方式の一種 *ISO-2022-JP-2004 - 本符号化方式と同様のJIS X 0213の符号化方式の一種 !!コメント *ウィンドウズのシフトジスとは非互換。はしご高や立ざきが文字化けする。 - よよよ (2019年11月19日 02時36分58秒) *サファリのメニューにシフトジスエックス0213あるけど日本語は表示できません - よよよ (2019年11月19日 02時46分26秒) *Windowsのベンダ定義外字はWindows側で修正すべき問題です。CP932では第3第4水準漢字もアクセント付きアルファベットもアイヌ語も使えません。 - jisx0213 (2021年12月12日 16時53分49秒) {{comment}} {{attach}}